微信公众平台实现获取用户OpenID的方法

5年以前  |  阅读数:872 次  |  编程语言:PHP 

本文实例讲述了微信公众平台实现获取用户OpenID的方法。分享给大家供大家参考。具体分析如下:

用户点击微信自定义菜单view类型按钮后,微信客户端将会打开开发者在按钮中填写的url值 (即网页链接),达到打开网页的目的,但是view不能获取用户的openid,需要使用微信"网页授权获取用户基本信息"高级接口结合使用,获得用户的登入个人信息。

具体方法:

1、配置网页授权回调域名,如 www.jb51.net

2、模拟公众号的第三方网页,http://www.jb51.net/getcodeurl.php


    <?php 
    if(isset($_SESSION['user'])){ 
     print_r($_SESSION['user']);
    exit;
    }
    $APPID='公众号在微信的appid';
    $REDIRECT_URI='http://www.jb51.net/callback.php';
    $scope='snsapi_base';
    //$scope='snsapi_userinfo';//需要授权
    $url='https://open.weixin.qq.com/connect/oauth2/authorize?appid='.$APPID.'&redirect;_uri='.urlencode($REDIRECT_URI).'&response;_type=code&scope;='.$scope.'&state;='.$state.'#wechat_redirect';
    header("Location:".$url);
    ?>

3、第三方网页的回跳url中,首先从请求中取得code,然后根据code进一步换取openid和access_token,然后就可以根据openid和access_token调用微信的相关接口查询用户信息了。


    <?php
    //http://www.jb51.net/callback.php
    $appid = "公众号在微信的appid"; 
    $secret = "公众号在微信的app secret"; 
    $code = $_GET["code"]; 
    $get_token_url = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid='.$appid.'&secret;='.$secret.'&code;='.$code.'&grant;_type=authorization_code';
    $ch = curl_init();
    curl_setopt($ch,CURLOPT_URL,$get_token_url); 
    curl_setopt($ch,CURLOPT_HEADER,0); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1 ); 
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10); 
    $res = curl_exec($ch); 
    curl_close($ch); 
    $json_obj = json_decode($res,true); 
    //根据openid和access_token查询用户信息 
    $access_token = $json_obj['access_token']; 
    $openid = $json_obj['openid']; 
    $get_user_info_url = 'https://api.weixin.qq.com/sns/userinfo?access_token='.$access_token.'&openid;='.$openid.'〈=zh_CN'; 

    $ch = curl_init(); 
    curl_setopt($ch,CURLOPT_URL,$get_user_info_url); 
    curl_setopt($ch,CURLOPT_HEADER,0); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1 ); 
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10); 
    $res = curl_exec($ch); 
    curl_close($ch); 

    //解析json 
    $user_obj = json_decode($res,true); 
    $_SESSION['user'] = $user_obj; 
    print_r($user_obj); 
    ?>

希望本文所述对大家基于php的微信公众平台开发有所帮助。

 相关文章:
PHP分页显示制作详细讲解
SSH 登录失败:Host key verification failed
获取IMSI
将二进制数据转为16进制以便显示
获取IMEI
文件下载
贪吃蛇
双位运算符
PHP自定义函数获取搜索引擎来源关键字的方法
Java生成UUID
发送邮件
年的日历图
提取后缀名
在Zeus Web Server中安装PHP语言支持
让你成为最历害的git提交人
Yii2汉字转拼音类的实例代码
再谈PHP中单双引号的区别详解
指定应用ID以获取对应的应用名称
Python 2与Python 3版本和编码的对比
php封装的page分页类完整实例