微信开发之网页授权

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了微信开发之网页授权相关的知识,希望对你有一定的参考价值。

第一步:成为开发者

  在自己的公众号点击基本配置,点击基本配置,填写服务器配置

技术分享图片

技术分享图片

Url服务器地址是微信回调地址,必须以 http://或https://开头,端口号必须为80或443。 
Token令牌由用户自己定义,数字或字母,长度为3~32字符。 
EncodingAESKey随机生成即可。 
加密方式可以选明文模式和安全模式

点击提交,微信会发送请求到你填写的url地址验证服务器是否与所填写的资料匹配,配置成功则可以开始开发了

第二步:微信网页授权

微信授权分为静默授权和非静默授权

静默授权:用户感受不到他们操作了授权,公众号开发者获取的资料较少,

非静默授权:用户需要点击授权,开发者获得用户较多的信息,比如所在省市,昵称头像等

前提配置:

1.获取公众号appIDappsecret

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=APPID&secret=SECRET&code=CODE&grant_type=authorization_code

: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 TokenOpenID给微信公众账号和回调域名

正确返回如下:

{

   "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 用户头像,最后一个数值代表正方形头像大小(有0466496132数值可选,0代表640*640正方形头像),用户没有头像时该项为空。若用户更换头像,原有头像URL将失效。

Privilege 用户特权信息,json 数组,如微信沃卡用户为(chinaunicom

Unionid 只有在用户将公众号绑定到微信开放平台帐号后,才会出现该字段。详见:获取用户个人信息

 




以上是关于微信开发之网页授权的主要内容,如果未能解决你的问题,请参考以下文章

PHP微信接口开发之高级篇之网页授权获取用户基本信息

微信公众号开发之网页授权登录及code been used 解决!

微信开发之网页授权

微信公众号开发之网页授权(获取用户信息)

Java微信公众平台开发之OAuth2.0网页授权

微信开发之分清公众平台和开放平台公众号全局凭证和网页授权凭证