微信开发之网页授权
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了微信开发之网页授权相关的知识,希望对你有一定的参考价值。
第一步:成为开发者
在自己的公众号点击基本配置,点击基本配置,填写服务器配置
Url服务器地址是微信回调地址,必须以 http://或https://开头,端口号必须为80或443。
Token令牌由用户自己定义,数字或字母,长度为3~32字符。
EncodingAESKey随机生成即可。
加密方式可以选明文模式和安全模式
点击提交,微信会发送请求到你填写的url地址验证服务器是否与所填写的资料匹配,配置成功则可以开始开发了
第二步:微信网页授权
微信授权分为静默授权和非静默授权
静默授权:用户感受不到他们操作了授权,公众号开发者获取的资料较少,
非静默授权:用户需要点击授权,开发者获得用户较多的信息,比如所在省市,昵称头像等
前提配置:
1.获取公众号appID和appsecret
2.开发 - 接口权限 - 网页服务 - 网页帐号 - 网页授权获取用户基本信息”的配置选项中,修改授权回调域名,例:www.qq.com,不用加http等协议
授权步骤:
1.用户关注微信公众账号。
2.微信公众账号提供用户请求授权页面URL。公众号提供一个链接或二维码或点击的自定义菜单,若用户点击,开发者服务器向微信服务器接口发送请求获取code,
获取code的微信服务器接口:
https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect
例:https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx4a22b50d7e897f97&redirect_uri=http%3a%2f%2fad.seewo.com%2foauth.php&response_type=code&scope=snsapi_userinfo&state=123#wechat_redirect
*Appid: 公众号的唯一标识(这个就是我们前面申请的)
*redirect_uri: 授权后回调的url(这里需要具体,在我们前面设置的回调域名后加具体的文件或方法地址)
*response_type: 返回类型,请填写code
*Scope: 应用授权作用域,snsapi_base (静默授权,不弹出授权页面,直接跳转,只能获取用户openid),snsapi_userinfo (弹出授权页面,可通过openid拿到昵称、性别、所在地。并且,即使在未关注的情况下,只要用户授权,也能获取其信息)
State: 重定向后会带上state参数,开发者可以填写a-zA-Z0-9的参数值,最多128字节,该值会被微信原样返回,我们可以将其进行比对,防止别人的攻击。
#wechat_redirect:直接在微信打开链接可不填此参数。做页面302重定向时候,必须带此参数
3.用户点击授权页面URL,将向服务器发起请求
4.服务器询问用户是否同意授权给微信公众账号(snsapi_base时无此步骤)
5.用户同意(snsapi_base时无此步骤)
6.服务器将CODE通过回调传给微信公众账号,同时给回调域名根目录下所有php文件
7.微信公众账号获得CODE,域名下php文件获取code
8.微信公众账号通过CODE向服务器请求Access Token,域名下PHP文件请求access token
例:https://api.weixin.qq.com/sns/oauth2/access_token?appid=wx41cb8dbd827a16e9&secret=d4624c36b6795d1d99dcf0547af5443d&code=00137323023ab55775be09d6d8e75ffA&grant_type=authorization_code
*Appid 公众号的唯一标识
*Secret 公众号的appsecret
*Code 填写第一步获取的code参数
*grant_type 填写为authorization_code
9.服务器返回Access Token和OpenID给微信公众账号和回调域名
正确返回如下:
{
"access_token":"ACCESS_TOKEN",
"expires_in":7200,
"refresh_token":"REFRESH_TOKEN",
"openid":"OPENID",
"scope":"SCOPE"
}
access_token 网页授权接口调用凭证,注意:此access_token与基础支持的access_token不同
expires_in access_token 接口调用凭证超时时间,单位(秒)
refresh_token 用户刷新access_token
Openid 用户唯一标识
Scope 用户授权的作用域,使用逗号(,)分隔
10.微信公众账号通过Access Token向服务器请求用户信息(snsapi_base时无此步骤)
https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID
11.服务器将用户信息回送给微信公众账号(snsapi_base时无此步骤)
{
"openid":" OPENID",
" nickname": NICKNAME,
"sex":"1",
"province":"PROVINCE"
"city":"CITY",
"country":"COUNTRY",
"headimgurl": "http://wx.qlogo.cn/mmopen/g3MonUZtNHkdmzicIlibx6iaFqAc56vxLSUfpb6n5WKSYVY0ChQKkiaJSgQ1dZuTOgvLLrhJbERQQ4eMsv84eavHiaiceqxibJxCfHe/46",
"privilege":[
"PRIVILEGE1"
"PRIVILEGE2"
],
"unionid": "o6_bmasdasdsad6_2sgVt7hMZOPfL"
}
Openid 用户的唯一标识
Nickname 用户昵称
Sex 用户的性别,值为1时是男性,值为2时是女性,值为0时是未知
Province 用户个人资料填写的省份
City 普通用户个人资料填写的城市
Country 国家,如中国为CN
Headimgurl 用户头像,最后一个数值代表正方形头像大小(有0、46、64、96、132数值可选,0代表640*640正方形头像),用户没有头像时该项为空。若用户更换头像,原有头像URL将失效。
Privilege 用户特权信息,json 数组,如微信沃卡用户为(chinaunicom)
Unionid 只有在用户将公众号绑定到微信开放平台帐号后,才会出现该字段。详见:获取用户个人信息
以上是关于微信开发之网页授权的主要内容,如果未能解决你的问题,请参考以下文章