php获取微信用户信息(没测试过)

<?php
/**
 * 通过$appid、$appsecret获得基础支持的接口唯一凭证access_token,返回值为array类型
 */
function get_access_token_base($appid , $appsecret ) {
        $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$appid&secret=$secret";
        $output = https_request( $url );
        $jsoninfo = json_decode($output, true);
        return $jsoninfo;
}  

//=======================================================================================================================================  

/**
 * 通过网页授权access_token和用户openid获取用户信息
 * 返回值为array类型
 */
public function get_userinfo($access_token , $openid ) {
    $url = "https://api.weixin.qq.com/sns/userinfo?access_token=$access_token&openid=$openid&lang=zh_CN";
    $output = https_request( $url );
    $jsoninfo = json_decode($output, true);
    return $jsoninfo;
}  

//=======================================================================================================================================  

/**
 * 获取JS接口中的签名signature
 */
function jssdk( $appid , $appsecret ,$access_token){
    //获取缓存的access_token
    $access_token = S(‘access_token‘);
    if( $access_token =="" ) {
        $jsoninfo = $this->get_access_token( $appid, $appsecret );
        $access_token = $jsoninfo[‘access_token‘];
        S(‘access_token‘ , $access_token , 3600);
    }  

    $jsapi = file_get_contents("https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=".$access_token."&type=jsapi");
    $jsapi = json_decode($jsapi);
    $j = get_object_vars($jsapi);
    $jsapi = $j[‘ticket‘];//get JSAPI  

    $time = 14999923234;
    $noncestr= $time;
    $jsapi_ticket= $jsapi;
    $timestamp=$time;
    $url=‘http://‘.$_SERVER[‘HTTP_HOST‘].$_SERVER[‘REQUEST_URI‘];
    $and = "jsapi_ticket=".$jsapi_ticket."&noncestr=".$noncestr."×tamp=".$timestamp."&url=".$url."";
    $signature = sha1($and);
    return $signature;
}  

//=======================================================================================================================================  

/**
 * 若在TP框架中,可用此方法将微信JS接口所需要的参数传递至模板中
 */
function js_param_to_temp( $appid , $appsecret, $access_token ) {
    //获取缓存的access_token
    $access_token = S(‘access_token‘);
    if( $access_token =="" ) {
        $jsoninfo = $this->get_access_token( $appid, $appsecret );
        $access_token = $jsoninfo[‘access_token‘];
        S(‘access_token‘ , $access_token , 3600);
    }
    $this->assign(‘appid‘ , $appid);
    $jsapi = file_get_contents("https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=".$access_token."&type=jsapi");
    $jsapi = json_decode($jsapi);
    //将对象转为数组
    $j = get_object_vars($jsapi);
    $jsapi = $j[‘ticket‘];//get JSAPI  

    $time = time();
    $noncestr= $time;
    $this->assign(‘noncestr‘ , $noncestr);
    $jsapi_ticket= $jsapi;
    $timestamp=$time;
    $this->assign(‘timestamp‘ , $timestamp);
    $url=‘http://‘.$_SERVER[‘HTTP_HOST‘].$_SERVER[‘REQUEST_URI‘];
    $and = "jsapi_ticket=".$jsapi_ticket."&noncestr=".$noncestr."×tamp=".$timestamp."&url=".$url."";
    $signature = sha1($and);
    $this->assign(‘signatrue‘ , $signature);  

}  

//=======================================================================================================================================  

/**
 * 构造获取用户信息所需要的code,的链接
 * $jump_url:为用户授权后的跳转地址,可用get方式获取code,且只能使用一次
 * $scope:为应用授权作用域,snsapi_base (不弹出授权页面,直接跳转,只能获取用户openid),
 * snsapi_userinfo: (弹出授权页面,可通过openid拿到昵称、性别、所在地。并且,即使在未关注的情况下,只要用户授权,也能获取其信息)
 */
function construct_getcode_url( $appid, $jump_url, $scope="snsapi_userinfo" ) {
    $jump_u = urlencode( $jump_url );
    $url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=" . $appid .
    "&redirect_uri=" . $jump_url . "&response_type=code&scope=" . $scope . "&state=1#wechat_redirect";
    return $url;
}  

//=======================================================================================================================================  

/**
 * 获取网页授权access_token
 * 所需要的参数必须有用户授权后返回的code值
 * 返回值为array类型
 * 包括:access_token、expires_in、refresh_token、scope、unionid
 */
function get_access_token_web( $appid, $appsecret, $code ) {
    $url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=". $appid ."&secret=". $appsecret ."&code=". $code ."CODE&grant_type=authorization_code";
    $output = https_request( $url );
    $jsoninfo = json_decode($output, true);
    return $jsoninfo;
}  

//=======================================================================================================================================  

/**
 * 检验access_token是否有效
 * access_token为网页授权接口凭证
 * openid为用户ID
 */
function check_access_token( $access_token , $openid ) {
    $url = "https://api.weixin.qq.com/sns/auth?access_token=". $access_token ."&openid=". $openid ;
    $output = https_request( $url );
    $jsoninfo = json_decode($output, true);
    if( $jsoninfo[‘errcode‘] == 0 ) {
        return true;
    } else {
        return false;
    }
}  

//=======================================================================================================================================  

/**
 * 数据请求
 * @return string $output 返回的数据,未解码
 */
function https_request($url, $data = null){
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
    if (!empty($data)){
        curl_setopt($curl, CURLOPT_POST, 1);
        curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
    }
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    $output = curl_exec($curl);
    curl_close($curl);
    return $output;
}  

//=======================================================================================================================================  

/**
 *  此接口唯一凭证access_token为基础凭证
 *  返回的信息全面
 */
function get_user_info( $access_token, $openid ) {
    $url = "https://api.weixin.qq.com/cgi-bin/user/info?access_token=". $access_token ."&openid=". $openid ."&lang=zh_CN";
    $output = https_request( $url );
    $jsoninfo = json_decode($output, true);
    return jsoninfo;
}  

//========================================================================================================================================  

/**
 *  此接口为用公众号接口唯一凭证access_token和用户openid获取用户信息,包括订阅、头像、昵称等详细信息
 *  @param string $access_token :公众号接口唯一凭证
 *  @param string $openid :用户openid
 *  @return array :用户详细信息
 */
function get_user_if( $access_token, $openid ) {
    $url = "https://api.weixin.qq.com/cgi-bin/user/info?access_token=". $access_token ."&openid=" . $openid . "&lang=zh_CN";
    $output = https_request( $url );
    $jsoninfo = json_decode($output, true);
    return $jsoninfo;
}  

//========================================================================================================================================  

/**
 * 菜单类处理 (***未完善***)
 * @param access_token:公众号基础接口
 * @param action:操作:0:创建;1:查询;2:删除;3:获取菜单配置接口
 * @param data:菜单处理json数据
 * @return info:处理结果
 */
function menu_handle( $access_token, $action, $data ) {
    switch ($action) {
        case 0:
            $url = "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=" . $access_token;
            //post方式提交
            $ch = curl_init();
            curl_setopt($ch, CURLOPT_URL, $url);
            curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
            curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
            curl_setopt($ch, CURLOPT_USERAGENT, ‘Mozilla/5.0 (compatible; MSIE 5.01; Windows NT 5.0)‘);
            curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
            curl_setopt($ch, CURLOPT_AUTOREFERER, 1);
            //带上数据
            curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            //反馈数据
            $info = curl_exec($ch);
            if (curl_errno($ch)) {
                echo ‘Errno‘.curl_error($ch);
            }
            curl_close($ch);
            break;
        case 1:
            $url = "https://api.weixin.qq.com/cgi-bin/menu/get?access_token=" . $access_token;
            $info = https_request( $url );
            break;
        case 2:
            $url = "https://api.weixin.qq.com/cgi-bin/menu/delete?access_token=" . $access_token;
            $info = https_request( $url );
            break;
        case 3:
            $url = "https://api.weixin.qq.com/cgi-bin/get_current_selfmenu_info?access_token=" . $access_token;
            $info = https_request( $url );
            break;
    }
    return $info;  

}  
时间: 2024-10-14 06:30:42

php获取微信用户信息(没测试过)的相关文章

小白学react之网页获取微信用户信息

通过上一篇<小白学react之EJS模版实战>我们学习了如何通过EJS模版生成我们高定制化的index.html文件. 本篇我们将会继续延续我们的alt-tutorial项目的实战计划,去获取微信扫码用户的信息,并将头像显示在我们页面的右上角上. 最终实战效果将如下所示. 首先根据我们的网站url生成二维码,比如我们可以通过浏览器的FeHelper来生成: 然后用户通过微信扫码: 最后用户确定授权后获取到用户的基本信息,并将头像显示在右上角: 1. 内网穿透准备 我们获取微信用户信息的过程中,

python flask获取微信用户信息报404,nginx问题

在学习flask与微信公众号时问题,发现测试自动回复/wechat8008时正常,而测试获取微信用户信息/wechat8008/index时出现404.查询资料后收发是nginx配置问题. 在location后面加上=是严格匹配,url后面必须完全一至,不加等号则是只要url是以该信息开头就匹配成功.所以去掉等号,重启nginx正常. 将 location = /wechat8008 {改为 location /wechat8008 { 重启nginx sudo /usr/local/nginx

Magicodes.WeiChat——使用OAuth 2.0获取微信用户信息

使用Magicodes.WeiChat,可以很方便的获取到微信用户的信息.在使用OAuth 2.0之前,你先需要做以下操作: 1)在开发者中心修改[网页授权获取用户基本信息],在弹出的界面输入自己的根域名.比如:weichat.chinacloudsites.cn 如下图所示: 2)配置菜单或者链接(如果使用特性“WeChatOAuth”,本步骤可以略过,这里只是介绍下原理,具体请参考步骤3的说明).Magicodes.WeiChat在控制器WeiChatController中进行处理,配置路径

Android 微信登录昵称乱码问题,及获取微信用户信息

微信第三方登录时昵称,username乱码问题解决方法如下: /** * 获取微信用户信息 * @param access_token 调用凭证 * @param openid 普通用户的标识,对当前开发者帐号唯一 * @return */ public static String getWeixinUserinfo(String access_token, String openid){ String URLs = ChildendConstant.WEIXIN_USERINFO;//微信登录

基于ThinkPHP框架小程序获取微信用户信息并将存进数据库

场景描述:在微信小程序中,我们可能用到很多种登陆方式,例如用手机作为标识登陆亦或者用微信信息作为标识登陆(但这写都要看你的项目需要),在这里我说一下如何使用微信信息作为标识登陆. 编程思路:分三步走,第一步微信信息获取发送给后台->第二步解密微信信息验证数据库->登陆成功保存缓存并且更新token 小程序前端处理 1 //调用登录接口,获取 code 2 wx.login({ 3 success: function (res) { 4 //微信js_code 5 that.setData({

集成微信第三方登录功能获取微信用户信息

最近公司要做微信的第三方登录,本来打算直接用第三方的框架就算了,就闲的想自己集成试试看. 然后发现被腾讯坑得不省人事. 前提,应用必须要在微信开发平台上注册,并且通过审核,有微信登录的权限. 首先,下载官方的demo.把libs的jar包拷到自己的工程里. 在应用的包名下,建一个wxapi的包目录,在里建一个叫WXEntryActivity的activity并实现IWXAPIEventHandler监听,用于微信回调数据! 下面是我自己的WXEntryActivity,OnUserInfoLis

获取微信用户信息出现乱码

在绑定用户微信时,需要从微信获取用户信息,此处容易出现乱码. JSONObject jo = this.getAccessTokenOpenid(code); StringBuilder sb = new StringBuilder("https://api.weixin.qq.com/sns/userinfo?access_token="); sb.append(jo.getString("access_token")); sb.append("&

SpringCloud : 接入 微信公众号平台(四)、获取微信用户信息接口

代码参考: import com.phpdragon.wechat.proxy.config.WeChatConfig; import com.phpdragon.wechat.proxy.dto.mp.user.GetOauthUserInfoDto; import com.phpdragon.wechat.proxy.dto.mp.user.GetOpenidDto; import com.phpdragon.wechat.proxy.dto.mp.user.GetUserInfoDto;

微信公众平台获取微信用户信息

1: 进入开发者管理中心 ---网页服务-----网页账号------网页授权获取用户基本信息  修改  改成自己网站的根域名 格式 如下图                             2:建立一个连接 3: 具体获取数据的代码 //获取用户信息的函数 $accesstoken $openudfunction usertoken($accesstoken,$openid){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "https