php 电脑端与手机端网页实现第三方微信登录
发表时间: 2016-08-17 11:44:22 | 浏览次数:
准备工作:登录到微信开放平台,申请AppID(应用ID)和AppSecret(应用密钥)。PS:貌似使用微信服务号的AppID和AppSecret也可以,测试了手机端是可以,电脑端测试提示“Scope参数错误或没有Scope权限”,不知道是不是还要在公众号中设置,因为小编没有公司微信服务号的密码,所以没法设置和测试。
下面小编是在开放平台申请的AppID和AppSecret
一、电脑端(扫描二维码授权登录)
其实微信开放平台上已经有比较详细的说明文档了,大家也可以先看看那个,小编文采不好就简单通俗地说说
1.请求code,访问该链接:https://open.weixin.qq.com/connect/qrconnect?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect,就是你的微信登录按钮的链接就用这个网址就行,填上自己的参数
参数说明:(官方的,不是小编整理的)
参数 | 是否必须 | 说明 |
appid | 是 | 应用唯一标识 |
redirect_uri | 是 | 重定向地址,需要进行UrlEncode |
response_type | 是 | 填code |
scope | 是 | 应用授权作用域,拥有多个作用域用逗号(,)分隔,网页应用目前仅填写snsapi_login即可 |
state | 否 | 用于保持请求和回调的状态,授权请求后原样带回给第三方。该参数可用于防止csrf攻击(跨站请求伪造攻击),建议第三方带上该参数,可设置为简单的随机数加session进行校验 |
2.请求之后会跳转到上面填写的“重定向地址”,地址后面会多加一串code和自己生成的随机数state,如:http://www.lrfun.com/callback.php?code=0016Rxc30anauA1blHc10SLwc109RxcS&state=ejdyin
获得code之后,通过code再获得一系列数据,请求链接:https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code
参数不多说了,将code改为刚刚获得的code即可。
代码如下:
$code = $_GET['code']; $requestLink = file_get_contents("https://api.weixin.qq.com/sns/oauth2/access_token?appid=AppID&secret=AppSecret&code=".$code."&grant_type=authorization_code");//通过code换取网页授权access_token $jsonData = json_decode($requestLink); //对JSON格式的字符串进行编码 $data = get_object_vars($jsonData); //转换成数组 $openid = $data['openid']; //输出openid(唯一标识)
获得openid,后续的工作自己完成啦。
二、手机端登录(仅限在微信中访问)
流程也跟电脑端的一样,只不过获取code的链接不同而已
1.请求code,访问链接:https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect
注:scope填写为snsapi_userinfo
2.跟电脑端第二部完全一样,通过code换取网页授权access_token。
(转载请注明:转自http://www.lrfun.com)
上一篇:Jsonp 解决Ajax跨域请求 php
下一篇:微信公众平台开发|发送模板消息