首页>>技术前沿>>网站/软件行业动态
浅谈php微信授权登录基本流程
作者:微商城 | 转载 来源:php,微信授权登录 | 时间:2018年1月17日| 点击:0次 | 【评论】

微信授权登录的基本流程

 

微信授权登录分为两种方式


1、以snsapi_base为scope发起的网页授权,这种授权方式是静默授权并自动跳转到回调页的。获取的是用户的openid。给用户的感觉就是直接进入了回调页(往往是业务页面)。


2、以snsapi_userinfo为scope发起的网页授权,可以获取到用户的基本信息。这种授权需要用户手动同意,并且由于用户同意过,所以无须关注,就可在授权后获取该用户的基本信息。下边我主要就第二种授权方式谈谈我的看法。

一、获取用户信息步骤如下:


1 第一步:用户同意授权,获取code
2 第二步:通过code换取网页授权access_token
3 第三步:刷新access_token(如果需要)
4 第四步:拉取用户信息(需scope为 snsapi_userinfo)


二、具体的操作如下:


1 获取code
在确保微信公众账号拥有授权作用域(scope参数)的权限的前提下,引导关注者打开如下页面:
如果用户同意授权,页面将跳转至 https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect

其中:
appid指的是申请的公众号的唯一标识,
redirect_uri指的是授权后重定向的回调链接地址, 请使用 urlEncode 对链接进行处理,
response_type指的是返回类型。
这样我们就可以获取到微信服务器返回的code


2 通过code换取网页授权access_token
获取code后,请求以下链接获取access_token:
https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code


其中:
appid指的是申请的公众号的唯一标识,
secret指的是申请的公众号的秘钥
code指的是上面获取到的code
正确时返回的JSON数据包如下:
{ "access_token":  "ACCESS_TOKEN",
"expires_in":  7200,
"refresh_token":  "REFRESH_TOKEN",
"openid":  "OPENID",
"scope":  "SCOPE" }


3 第三步:刷新access_token(如果需要)


由于access_token拥有较短的有效期,当access_token超时后,可以使用refresh_token进行刷新,refresh_token有效期为30天,当refresh_token失效之后,需要用户重新授权。
请求以下链接获取access_token:
https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=APPID&grant_type=refresh_token&refresh_token=REFRESH_TOKEN
其中:refresh_token指的是第二步返回的json数据中的refresh_token
正确时返回的JSON数据包如下:
{ "access_token":"ACCESS_TOKEN",
"expires_in":7200,
"refresh_token":"REFRESH_TOKEN",
"openid":"OPENID",
"scope":"SCOPE" }


4 第四步:拉取用户信息(需scope为 snsapi_userinfo)


 https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN

这时候我们可以获取到:
openid:用户的唯一标识
nickname:用户昵称
sex:用户的性别,值为1时是男性,值为2时是女性,值为0时是未知
province:用户个人资料填写的省份
city:普通用户个人资料填写的城市
country:用户个人资料资料的国籍
headimgurl:用户头像。


到这里就ok了。微信授权登录就已经完成了。开发人员就可以进行将获取到用户的信息加入到数据库等操作。

此内容DOC下载 此内容PDF下载

【全文完】
关键词标签: php 微信授权登录 
0 ([$-顶稿人数-$])
0 ([$-踩稿人数-$])

版权声明:

1、陕西弈聪网站内容中凡注明“来源:XXX(非陕西弈聪网站)”的作品,转载自其它媒体,转载目的在于传递更多信息,其中涉及的网站建设,网站优化,百度关键词优化,西安软件开发等技术细节并不代表本站赞同支持其观点,并不对其真实性负责。对于署名“陕西弈聪”的作品系本站版权所有,任何人转载请署名来源,否则陕西弈聪将追究其相关法律责任。

2、本站内容中未声明为“原创”的内容可能源自其它网站,但并不代表本站支持其观点,对此带来的法律纠纷及其它责任与我方无关。如果此内容侵犯了您的权益,请联系我方进行删除。