今天给各位分享微信公众号网页授权开发攻略:OAuth2.0授权机制全解析的知识,其中也会对进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
用户关注微信公众号。 2、微信公众号提供用户请求授权页面URL。 3、用户点击授权页面URL,会向服务器发起请求。 4、服务器询问用户是否同意授权微信公众号(作用域为snsapi_base时不需要此步骤)。 5、用户同意(范围为snsapi_base时不需要此步骤)。 6. 服务器通过回调将CODE 传给微信公众号7. 微信公众号获取CODE 8. 微信公众号通过CODE 向服务器请求Access Token 9. 服务器将Access Token 和OpenID 返回给微信公众号10. 微信公众号通过Access Token 信息向服务器请求用户(作用域为snsapi_base 时无此步骤) 11. 服务器将用户信息返回给微信公众号(当作用域为snsapi_base 时无此步骤)作用域为snsapi_base) 【图片上传中。 (1)]
使用的AppId和AppSecret可以在开发者中心-开发者ID中找到。
1. 配置授权回调页面域名进入微信公众平台后台后,进入开发者中心-权限表,找到授权获取用户基本信息的网页,【图片正在上传中。 (3)]
单击右侧的编辑。原文:http://www.cnblogs.com/txw1958/p/weixin71-oauth20.html
授权回调域名配置规范为完整域名,不包含http。例如,需要网页授权的域名为:www.qq.com。配置后,该域名下的页面为http://www.qq.com/music.html 和http://www.qq.com/login.html 都可以进行OAuth2.0认证。但http://pay.qq.com、http://music.qq.com、http://qq.com无法进行OAuth2.0认证。
这里我们填写方贝工作室的一个百度应用的二级域名为mascot.duapp.com
原文:http://www.cnblogs.com/txw1958/p/weixin71-oauth20.html
如果您的网址未被列入黑名单,它将显示在顶部
【图片正在上传中。 (6)]
至此,域名配置成功。2. 用户授权并获取code在域名根目录下新建文件oauth2.php,内容如下:
复制代码
?phpif (isset($_GET["code"])){ echo $_GET["code"];}else{ echo "无代码";}?
复制代码,先了解一下请求授权页面是如何构造的:
https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPIDredirect_uri=REDIRECT_URIresponse_type=codescope=SCOPEstate=STATE#wechat_redirect
参数说明
范围
必须
阐明
应用程序标识符
是的
公众号唯一标识
重定向URI
是的
授权后重定向的回调链接地址****
响应类型
是的
返回类型,请填写code
范围
是的
应用授权范围,snsapi_base(不弹出授权页面,直接跳转,只能获取用户的openid),snsapi_userinfo(弹出授权页面,通过openid可以获取昵称、性别、所在地。并且,即使在未关注的情况下,只要用户授权,也能获取其信息)
状态
不
重定向后会携带state参数,开发者可以填写任意参数值。
wechat_redirect
否
如果您直接在微信上打开链接,则无需填写此参数。进行302页面重定向时,必须包含该参数
应用授权范围:由于snsapi_base只能获取openid,意义不大,所以我们使用snsapi_userinfo。回调地址:填写刚刚上传的oauth2.php的文件地址,状态参数:任意数字,此处填写1
构造请求url如下:
https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx8888888888888888redirect_uri=http://mascot.duapp.com/oauth2.phpresponse_type=codescope=snsapi_userinfostate=1#wechat_redirect
将此链接发送至微信,以便在微信浏览器中打开。这里用A链接来封装一下,如下:
OAuth2.0网页授权演示点此体验方贝工作室技术支持
微信中显示如下
【图片正在上传中。 (10)]
点击绑定后,弹出应用授权界面。
【图片正在上传中。 (11)]
选择允许并单击
跳转到auth2.php页面并执行
回显$_GET["代码"]
界面上显示的是代码。这时,通过复制右上角按钮中的链接,您将得到如下链接:
http://mascot.duapp.com/oauth2.php?code=00b788e3b42043c8459a57a8d8ab5d9fstate=1
我们成功获取到了code。
注意:如果绑定时出现这样的界面,说明参数不正确,需要返回检查参数。
【图片正在上传中。 (13)]
3. 使用code换取access_token如何构造access_token页面换取网页授权:
https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPIDsecret=SECRETcode=CODEgrant_type=authorization_code
参数说明
范围
有必要吗
阐明
应用程序标识符
是的
公众号唯一标识
秘密
是的
公众号的appsecret
代码
是的
填写第一步获取到的代码参数
授予类型
是的
填写授权码
code:这里填写上一步得到的值
构造请求url如下:
https://api.weixin.qq.com/sns/oauth2/access_token?appid=wx8888888888888888secret=aaaaaaaaaaaaaaaaaaaaaaaaaaaacode=00b788e3b42043c8459a57a8d8ab5d9fgrant_ type=authorization_code
可以直接在浏览器中执行该语句:
获取如下json数据:
复制代码
{ "access_token": "OezXcEiiBSKSxW0eoylIeAsR0GmYd1awCffdHgb4fhS_KKf2CotGj2cBNUKQQvj-G0ZWEE5-uBjBz941EOPqDQy5sS_GCs2z40dnvU99Y5AI1bw2uqN--2jXoBLIM5d6 L 9RImvm8Vg8cBAiLpWA8Vw","expires_in": 7200,"refresh_token":"OezXcEiiBSKSxW0eoylIeAsR0GmYd1awCffdHgb4fhS_KKf2CotGj2cBNUKQQvj-G0ZWEE5-uBjBz941EOPqD Qy 5sS_GCs2z40dnvU99Y5CZPAwZksiuz_6x_TfkLoXLU7kdKM2232WDXB3Msuzq1A","openid":"oLVPpjqs9BhvzwPj5A-vTYAX3GLc","范围": "snsapi_用户信息,"}
复制代码数据格式解释如下:
范围
描述
访问令牌
网页授权接口调用证书,注意:此access_token与基本支持的access_token不同
过期时间
access_token接口调用凭证超时时间,单位(秒)
刷新令牌
用户刷新access_token
开放ID
用户的唯一标识符。请注意,当用户没有关注公众号时,当用户访问公众号网页时,也会生成一个用户和公众号唯一的OpenID。
范围
用户授权范围,以逗号(,)分隔
至此,我们成功兑换了access_token和refresh_token的code。
复制代码
刷新access_token官方文档提到了刷新access_token的功能,但这不是必须的,第一次可以忽略。 url请求方法如下:
https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=APPIDgrant_type=refresh_tokenrefresh_token=REFRESH_TOKEN 参数说明
范围
有必要吗
阐明
应用程序标识符
是的
公众号唯一标识
授予类型
是的
填写为refresh_token
刷新令牌
是的
填写通过access_token获取到的refresh_token参数
结构如下:
https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=wx888888888888888grant_type=refresh_tokenrefresh_token=OezXcEiiBSKSxW0eoylIeAsR0GmYd1awCffdHgb4fhS_KKf2CotGj2cBNUKQQvj-G0ZW EE5-u BjBz941EOPqDQy5sS_GCs2z40dnvU99Y5CZPAwZksiuz_6x_TfkLoXLU7kdKM2232WDXB3Msuzq1A
在浏览器中执行即可得到与之前格式相同的json数据。
复制代码两遍:感觉刷新令牌是个没有意义的东西。您可以而且必须通过代码获取access token和openid,进而获取用户的基本信息。根本不需要刷新访问令牌。个人意见,仅供参考。
4. 使用access_token获取用户信息请求方式:
https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKENopenid=OPENID
参数说明
范围
描述
访问令牌
网页授权接口调用证书,注意:此access_token与基本支持的access_token不同
开放ID
用户的唯一标识符
构造url 如下:
https://api.weixin.qq.com/sns/userinfo?access_token=OezXcEiiBSKSxW0eoylIeAsR0GmYd1awCffdHgb4fhS_KKf2CotGj2cBNUKQQvj-G0ZWEE5-uBjBz941EOPqDQy5sS_GCs2z40dnvU99Y5AI1b w2uqN- -2jXoBLIM5d6L9RImvm8Vg8cBAiLpWA8Vwopenid=oLVPpjqs9BhvzwPj5A-vTYAX3GLc
可以直接在浏览器中执行该语句:
获取如下json数据:
复制代码
{ "openid": "oLVPpjqs9BhvzwPj5A-vTYAX3GLc", "昵称": "刺猬宝宝", "性别": 1, "语言": "简体中文", "城市": "深圳", "省": "广东" , "国家": "中国", "headimgurl": "http://wx.qlogo.cn/mmopen/utpKYf69VAbCRDRlbUsPsdQN38DoibCkrU6SAMCSNx558eTaLVM8PyM6jlEGzOrH67hyZibIZPXu4BK1XNWzSXB3Cs4qpBBg1 8/0", "特权": []}
复制代码参数解释:
范围
描述
开放ID
用户的唯一标识符
昵称
用户昵称
性别
用户的性别。当值为1时,为男性,当值为2时,为女性,当值为0时,未知。
省
用户资料填写的省份
城市
普通用户填写个人数据的城市
国家
国家,比如中国就是CN
头顶古尔
用户头像,最后一个值代表方形头像的大小(有0、46、64、96、132个值可供选择,0代表640*640的方形头像),用户时此项为空没有头像
特权
用户权限信息,json数组,如微信沃卡用户是(chinaunicom)
这和我个人微信信息一致
此时,无需输入我的账号和密码,微信公众号金宝就获取了我的个人信息,包括昵称、性别、国家、省份、城市、个人头像和权限列表。
一个完整的OAuth2认证就完成了。
三、详细演示扫描以下微信公众号二维码,回复“授权”。
【图片正在上传中。 (21)][图片正在上传中。 (22)][图片正在上传中。 (23)][图片正在上传中。 (24)][图片正在上传中。 (25)][图片正在上传中。 (26)]
弹出得到的结果
【图片正在上传中。 (27)][图片正在上传中。 (28)]
【微信公众号网页授权开发攻略:OAuth2.0授权机制全解析】相关文章:
2.米颠拜石
3.王羲之临池学书
8.郑板桥轶事十则
用户评论
终于学习完公众号OAuth2.0了,感觉有点儿门道啊!
有15位网友表示赞同!
想把自己的业务小程序和微信整合一下,OAuth2.0貌似很好用哦。
有7位网友表示赞同!
这篇文章写得真好理解!终于知道WeChat公众号认证是怎么一回事了。
有15位网友表示赞同!
我要开发一个网页版的应用,需要用到OAuth2.0,这篇文章很及时!
有19位网友表示赞同!
一直听人提起公众号的oauth认证,今天终于来看看具体是怎么用的。
有16位网友表示赞同!
之前没接触过公众号开发,这个OAuth2.0看起来有点复杂,慢慢学习吧。
有15位网友表示赞同!
想用微信登录我的网页应用,这篇文章正好教会我怎么做。
有17位网友表示赞同!
公众号的网页授权功能越来越重要了,一定要掌握一下。
有8位网友表示赞同!
原来微信公众号的开发这么多种方式,感觉很有趣!
有15位网友表示赞同!
学习开发小程序和公众号,OAuth2.0都是基础知识啊!
有5位网友表示赞同!
这篇文章帮助我解决了关于微信公众平台授权的问题。
有20位网友表示赞同!
以后写微信公众号程序可以参考一下这份教程。
有20位网友表示赞同!
网页授权功能可以让用户登录体验更加方便快捷!
有16位网友表示赞同!
很感谢作者分享这方面的经验,让我少走很多弯路!
有9位网友表示赞同!
想要更深入地了解微信公众平台的开发,这篇文章是个很好的开始!
有12位网友表示赞同!
希望能够通过学习OAuth2.0,自己也开发一些优秀的应用!
有9位网友表示赞同!
微信公众平台开发的知识越来越丰富了,真令人期待!
有17位网友表示赞同!
这个OAuth2.0概念一定要学会,以后对公众号的开发很有帮助!
有16位网友表示赞同!
这篇文章清晰易懂,非常适合新手入门学习。
有9位网友表示赞同!
关注公众号公众号 OAuth2.0网页授权的技术分享,了解更多新知识!
有13位网友表示赞同!