步骤一:申请微信开发者测试账号
https://mp.weixin.qq.com/debug/cgi-bin/sandboxinfo?action=showinfo&t=sandbox/index
步骤二:需要一个服务器,用来获取你要的信息,我使用的是阿里云
https://www.aliyun.com/?utm_content=se_1000301881
有了阿里云后推荐使用最近挺火的Xshell和Xftp来操作服务器
个人使用的话是免费的
https://www.netsarang.com/zh/free-for-home-school/
步骤三:下载个微信web开发者工具,不仅可以用来测试微信,其他的也可以测试
https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html
步骤四:可以页面设置个超链接进行测试,跳转到用户授权页面
授权链接:
https://open.weixin.qq.com/connect/qrconnect?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect
也可内嵌二维码授,直接设置一个div id设为login_container
步骤1:在页面中先引入如下JS文件(支持https):
http://res.wx.qq.com/connect/zh_CN/htmledition/js/wxLogin.js
步骤2:在需要使用微信登录的地方实例以下JS对象:
var obj = new WxLogin({
self_redirect:true,
id:“login_container”,
appid: “”,
scope: “”,
redirect_uri: “”,
state: “”,
style: “”,
href: “”
});
步骤五:当用户确认授权后,将返回一个code,可以通过code获取access_token
注意:code是一次性的,这里的access_token网页临时授权的,也是一次性的
不同的是还有一个access_token是全局接口使用凭证,有效期两个小时
获取方法,需要appID和appsercret
https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
这个access_token,是微信公众号的全局唯一票据,各个微信接口调用都需要用到它。这个接口每天使用限制是2000次,所以自动获取这个access_token是有限制,不能所以接口调用都去重新获取。它的有效期是2个小时,已经自动实现了平滑过渡,可以放心的每隔2小时调用一次。
以下通过code获取access_token,这个access_token将在下一步用来获取用户信息
https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code
返回说明
正确的返回:
{
“access_token”:“ACCESS_TOKEN”,
“expires_in”:7200,
“refresh_token”:“REFRESH_TOKEN”,
“openid”:“OPENID”,
“scope”:“SCOPE”,
“unionid”: “o6_bmasdasdsad6_2sgVt7hMZOPfL”
}
可以用file_get_contents(url)获取网页返回的信息
我是通过curl拓展库来获取url的信息,相对file_get_contents()更快更稳定
r e s a r r = c u r l g e t c o n t e n t s ( res_arr = curl_get_contents( resarr=curlgetcontents(url);
print_r($res_arr); //打印看看结果
function curl_get_contents($url) {
$ch = curl_init();//初始化
curl_setopt($ch, CURLOPT_URL, $url);//登录提交的地址
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);// 抓取结果直接返回(如果为0,则直接输出内容到页面)
curl_setopt($ch, CURLOPT_HEADER, 0);//是否显示头部信息
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);//响应超时时间s
$res_data = curl_exec($ch);//执行并获取HTML文档内容
if ($res_data === false) {//检查错误
$res_data = 'cURL error:' . curl_error($ch);
}
curl_close($ch);//关闭curl
return $res_arr;//返回结果
}
步骤六:通过步骤五获得的access_token和openid获取用户信息
我的代码,供参考
$_SESSION[‘access_token’] = $res_arr[‘access_token’];
$_SESSION[‘openid’] = $res_arr[‘openid’];
$url = “https://api.weixin.qq.com/sns/userinfo?access_token=” . $_SESSION[‘access_token’] . “&openid=” . $_SESSION[‘openid’] . “&lang=zh_CN”;
r e s a r r = c u r l g e t c o n t e n t s ( res_arr = curl_get_contents( resarr=curlgetcontents(url);
print_r($res_arr);
结果:
我使用的是/sns/userinfo获取用户个人信息,以下是接口说明
参考:
微信开发文档https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419316505&token=58dd5924aafd39c69972c47538101daba7237050&lang=zh_CN
Oauth2.0协议http://www.ruanyifeng.com/blog/2014/05/oauth_2_0.html