php 电脑端与手机端网页实现第三方微信登录

准备工作:登录到微信开放平台,申请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

欢迎转载,原文地址:http://www.lrfun.com/html/technology/PHP/2016/0817/98.html

上一篇:Jsonp 解决Ajax跨域请求 php
下一篇:微信公众平台开发|发送模板消息