本文实例讲述了php版微信公众平台之微信网页登陆授权。分享给大家供大家参考,具体如下:
微信公众平台实现微信网页登陆授权开发其实是非常的简单了,因为官方的参考程序了,下面小编就看了一站长根据官方参考做的一个网页登陆授权例子,大家可看看.
文件1:index.php
1
2
3
|
//换成自己的接口信息
$appid = 'XXXXX' ;
header( 'location:https://open.weixin.qq.com/connect/oauth2/authorize?appid=' . $appid . '&redirect_uri=127.0.0.1/oauth.php&response_type=code&scope=snsapi_userinfo&state=123&connect_redirect=1#wechat_redirect' );
|
参数 | 是否必须 | 说明 |
appid | 是 | 公众号的唯一标识 |
redirect_uri | 是 | 授权后重定向的回调链接地址,请使用urlencode对链接进行处理 |
response_type | 是 | 返回类型,请填写code |
scope | 是 | 应用授权作用域,snsapi_base(不弹出授权页面,直接跳转,只能获取用户openid),snsapi_userinfo(弹出授权页面,可通过openid拿到昵称、性别、所在地。并且,即使在未关注的情况下,只要用户授权,也能获取其信息) |
state | 否 | 重定向后会带上state参数,开发者可以填写a-zA-Z0-9的参数值 |
#wechat_redirect | 是 | 无论直接打开还是做页面302重定向时候,必须带此参数 |
文件二:oauth.php,代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
<?php
$code = $_GET [ 'code' ];
$state = $_GET [ 'state' ];
//换成自己的接口信息
$appid = 'XXXXX' ;
$appsecret = 'XXXXX' ;
if (emptyempty( $code )) $this ->error( '授权失败' );
$token_url = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid=' . $appid . '&secret=' . $appsecret . '&code=' . $code . '&grant_type=authorization_code' ;
$token = json_decode( file_get_contents ( $token_url ));
if (isset( $token ->errcode)) {
echo '<h1>错误:</h1>' . $token ->errcode;
echo '<br/><h2>错误信息:</h2>' . $token ->errmsg;
exit ;
}
$access_token_url = 'https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=' . $appid . '&grant_type=refresh_token&refresh_token=' . $token ->refresh_token;
//转成对象
$access_token = json_decode( file_get_contents ( $access_token_url ));
if (isset( $access_token ->errcode)) {
echo '<h1>错误:</h1>' . $access_token ->errcode;
echo '<br/><h2>错误信息:</h2>' . $access_token ->errmsg;
exit ;
}
$user_info_url = 'https://api.weixin.qq.com/sns/userinfo?access_token=' . $access_token ->access_token. '&openid=' . $access_token ->openid. '&lang=zh_CN' ; //开源软件:phpfensi.com
//转成对象
$user_info = json_decode( file_get_contents ( $user_info_url ));
if (isset( $user_info ->errcode)) {
echo '<h1>错误:</h1>' . $user_info ->errcode;
echo '<br/><h2>错误信息:</h2>' . $user_info ->errmsg;
exit ;
}
//打印用户信息
echo '<pre>' ;
print_r( $user_info );
echo '</pre>' ;
?>
|
参数 | 描述 |
openid | 用户的唯一标识 |
nickname | 用户昵称 |
sex | 用户的性别,值为1时是男性,值为2时是女性,值为0时是未知 |
province | 用户个人资料填写的省份 |
city | 普通用户个人资料填写的城市 |
country | 国家,如中国为CN |
headimgurl | 用户头像,最后一个数值代表正方形头像大小(有0、46、64、96、132数值可选,0代表640*640正方形头像),用户没有头像时该项为空. |
privilege | 用户特权信息,json数组,如微信沃卡用户为(chinaunicom) |
unionid | 只有在用户将公众号绑定到微信开放平台帐号后,才会出现该字段。详见:获取用户个人信息(UnionID机制) |
到此网页登陆授权开发功能就作完了,如果想要获取用户基本信息我们需要看另一个例子,在官方有说明大家可自行搜索哦.
希望本文所述对大家PHP程序设计有所帮助。