提要:
1. 建议对oauth2.0协议做一个学习。
2. 微信官方文档和微信官网工具要得到充分利用。
比较简单,直接帖源代码了。其中“xxxxxxxxxx”部分,是需要依据自己环境做替换的
/**
* oauth2.0微信授权登录实现
*
* @author zzy
* @文件名:getwxuserinfo.php
*/
// 回调地址
$url = urlencode("http://www.xxxxxxxxx.com/getwxuserinfo.php");
// 公众号的id和secret
$appid = 'xxxxxxxxx';
$appsecret = 'xxxxxxxxx';
session_start();
// 获取code码,用于和微信服务器申请token。 注:依据oauth2.0要求,此处授权登录需要用户端操作
if(!isset($_get['code']) && !isset($_session['code'])){
echo
'<a href="https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx6c11a252ff1d00c4
&redirect_uri='.$url.'&response_type=code&scope=snsapi_userinfo&state=1#wechat_redirect">
<font style="font-size:30">授权</font></a>';
exit;
}
// 依据code码去获取openid和access_token,自己的后台服务器直接向微信服务器申请即可
if (isset($_get['code']) && !isset($_session['token'])){
$_session['code'] = $_get['code'];
$url="https://api.weixin.qq.com/sns/oauth2/access_token?appid=".$appid.
"&secret=".$appsecret."&code=".$_get['code']."&grant_type=authorization_code";
$res = https_request($url);
$res=(json_decode($res, true));
$_session['token'] = $res;
}
print_r($_session);
// 依据申请到的access_token和openid,申请userinfo信息。
if (isset($_session['token']['access_token'])){
$url = "https://api.weixin.qq.com/sns/userinfo?access_token=".$_session['token']['access_token']."&openid=".$_session['token']['openid']."&lang=zh_cn";
echo $url;
$res = https_request($url);
$res = json_decode($res, true);
$_session['userinfo'] = $res;
}
print_r($_session);
// curl函数简单封装
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;
}
得到正确结果如下:
array
(
[code] => 041gzi4l0tvghg10n75l05fq4l0gzi42
[token] => array
(
[access_token] => two6w5qmpztzibu3fph2k4edc5bllp4sgeqkc4nbztj-zti-ctzj1srrnl1qgcf2lb1-6o3n7kh2bcxl5bxtqqjegk1cq12l8czf40r9xva
[expires_in] => 7200
[refresh_token] => iz3olcrkqpbojvssh2bokva09sjvsp1c8ltm7mvxxpfqxsbvi_wovmzhjqaszwlma7taggsg3mijmahjl7jrjhdquf1jkbhd6gndnltxq0u
[openid] => ota_xwq4r_5niovmshq
[scope] => snsapi_userinfo
)
[userinfo] => array
(
[openid] => ota_xwq4r_5niovmshqq
[nickname] => 野狐
[sex] => 1
[language] => zh_cn
[city] => 杭州
[province] => 浙江
[country] => 中国
[headimgurl] => http://wx.qlogo.cn/mmopen/piajxsqbraelwee7rhrt2ibnkc1menu04wiawrw9fkupbbgognrmbynnoeuxicgxoetw5vqqbtrs4fzdxnvawsz6gq/0
[privilege] => array
(
)
)
)
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持硕编程。
【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!