PHP微信开放平台实现微信第三方登录
-09-08
189
第一:在微信开放平台申请允许第三方用用后,获取到AppID以及AppSecrect信息
第二:进行登录,请求code
说明如下:参数是否必须说明appid是应用唯一标识
redirect_uri是请使用urlEncode对链接进行处理
response_type是填code
scope是应用授权作用域,拥有多个作用域用逗号(,)分隔,网页应用目前仅填写snsapi_login即
state否用于保持请求和回调的状态,授权请求后原样带回给第三方。该参数可用于防止csrf攻击(跨站请求伪造攻击),建议第三方带上该参数,可设置为简单的随机数加session进行校验
在浏览器中输入地址会出现下图
第三:返回接口实现
第二步骤中的redirect_uri 就是微信获取信息后返回的接口
代码实现如下<?php
$code=$_GET['code'];
$state=$_GET['state'];
//换成自己的接口信息
$appid='wxtd3rf1bee60e8e';
$appsecret='ba0960ag30a53gce9eg2c2afg2';
if(empty($code))print_R('授权失败');
$token_url='https://api./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'
错误:
'.$token->errcode;echo'
错误信息:
'.$token->errmsg;exit;
}
$access_token_url='https://api./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'
错误:
'.$access_token->errcode;echo'
错误信息:
'.$access_token->errmsg;exit;
}
$user_info_url='https://api./sns/userinfo?access_token='.$access_token->access_token.'&openid='.$access_token->openid.'&lang=zh_CN';
//转成对象
$user_info=json_decode(file_get_contents($user_info_url));
if(isset($user_info->errcode)){
echo'
错误:
'.$user_info->errcode;echo'
错误信息:
'.$user_info->errmsg;exit;
}
$result=json_decode(json_encode($user_info),true);//返回的json数组转换成array数组
//打印用户信息echo'
';
print_r($result);echo'
';
打印信息如下:Array
(
[openid]=>o-ukg1dHhZfHpP599dEkdWw-rC6k
[nickname]=>测试昵称
[sex]=>1
[language]=>zh_CN
[city]=>闵行
[province]=>上海
[country]=>中国
[headimgurl]=>/mmopen/vi_32/6QKOCrTPbTwOrGL1xoyS0MS4P3HYyfXCOvfOyunzUujibwOoicvrpHLl7SHVRy2KZMHnHB1pN6lSicFKYZSQ/132
[privilege]=>Array
(
)
[unionid]=>o4BJJ94i_138Tvt2bt1psNribCXU
)
最后就可以进行后续的操作了
分享到: