手机版

微信开发网页授权获取用户基本信息

时间:2021-09-07 来源:互联网 编辑:宝哥软件园 浏览:

微信公众平台最近推出了微信认证,认证后可以获得高级界面权限,其中之一就是OAuth2.0网页授权。很多朋友没有使用这个或者不能理解它的内容。希望能给个教程详细讲解一下,所以就有了这篇文章。

1.什么是OAuth2.0

官方网站:http://oauth.net/2/,http://oauth.net/

权威定义:oauth是一个开放的协议,允许从web、移动和桌面应用程序以简单和标准的方法进行安全授权。

OAuth是一种开放协议,允许用户让第三方应用程序以安全、标准的方式获取存储在网站、移动或桌面应用程序上的私有资源(如用户个人信息、照片、视频、联系人列表),而无需向第三方应用程序提供用户名和密码。

OAuth 2.0是OAuth协议的下一个版本,但它并不向后兼容OAuth 1.0。OAuth 2.0注重客户端开发者的简洁性,为Web应用、桌面应用、手机、客厅设备提供了特殊的认证流程。

OAuth允许用户提供令牌而不是用户名和密码来访问他们存储在特定服务提供商中的数据。每个令牌授权特定网站(例如,视频编辑网站)在特定时间段(例如,接下来的2小时)内访问特定资源(例如,仅某个相册中的视频)。通过这种方式,OAuth允许用户授权第三方网站访问他们存储在其他服务提供商上的信息,而无需共享他们的访问权限或他们数据的所有内容。

新浪微博API中也使用了OAuth 2.0。

原文:http://www.cnblogs.com/txw1958/p/weixin71-oauth20.html

二、微信公众平台OAuth2.0授权

微信公众平台OAuth2.0授权的详细步骤如下:

1.用户关注微信公众号。2.微信公众号提供用户请求授权页面的网址。3.用户点击授权页面的网址,一个请求将被发送到服务器。4.服务器询问用户是否同意授权微信公众号(范围为snsapi_base时,此步骤不可用)。5.用户同意(当范围为snsapi_base时,此步骤不可用)6。服务器通过回拨将CODE发送到微信公众号。7.微信公众号获取CODE。微信公众号通过代码向服务器请求访问令牌。9.服务器将访问令牌和OpenID返回给微信公众号。10.微信公众号通过Access Token向服务器请求用户信息(范围是snsap)I _ base时没有这个步骤)11。服务器将用户信息发送回微信公众号(范围为snsapi_base时没有此步骤)

使用的AppId和AppSecret可以在开发者中心-开发者Id中找到。

1.配置授权回调页面的域名

进入微信公众平台后台后,依次进入开发者中心-权限表,找到网页授权获取用户基本信息,

单击右侧的修改。原文:http://www.cnblogs.com/txw1958/p/weixin71-oauth20.html

授权回调域名配置规范是没有http的完整域名。例如,需要网页授权的域名是www.qq.com。配置后,OAuth2.0身份验证可以在http://www.qq.com/music.html和http://www.qq.com/login.html.的此域名下的页面上执行。但是,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

如果您的网站没有被列入黑名单,它将出现在顶部

然后,域名配置成功。

2.用户授权并获得代码

在域名的根目录下,创建一个名为oauth2.php的新文件,其内容如下

?phpif(isset($ _ GET[' code '])){ echo $ _ GET[' code '];} else { echo ' NO CODE}?首先,了解请求授权页面的结构:

https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPIDredirect _ uri=REDIRECT _ URIresponse _ type=codescope=scope estate=STATE #微信_redirect

参数描述

参数必须表明appid是微信官方账号的唯一标识。redirect_uri是授权后重定向的回调链接地址。response_type是返回类型。请填写代码范围为应用授权范围、snsapi_base(不弹出授权页面只能获取用户openid)、snsapi_userinfo(弹出授权页面时可以通过openid获取昵称、性别、位置。此外,即使用户不关心,只要用户授权就可以获得信息。)重定向后会带来状态参数,开发者可以填写任意参数值#微信_redirect,直接在微信上打开链接,但这个参数可以省略。重定向302页时,必须用这个参数应用授权范围:因为snsapi_base只能得到openid,意义不大,所以我们用snsapi_userinfo。

回拨地址:填写刚上传的oauth2.php的文件地址。

状态参数:任意数字,此处填写1

施工请求网址如下:

https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx 8888888888888888 redirect _ uri=http://mascot . duapp.com/oauth 2 . phpresponse _ type=code scope=snsapi _ user infostate=1 #微信_redirect

将此链接发送到微信,以便在微信浏览器中打开。这里,A链接封装如下:

欢迎关注【金宝】,它能让你更容易找到身边的餐厅、服装、百货、美容院。a href=' https://open . weixin . QQ.com/connect/oauth 2/authorize?appid=wx 88888888888888 redirect _ uri=http://mascot.duapp.com/oauth2.phpresponse _ type=codescope=snsapi _ user infostate=1 #微信_ redirect '点击此处绑定/a技术支持fangbei studio

微信上显示如下

点击【绑定】,打开应用授权界面

选择允许并单击

跳转到auth2.php页面并执行

echo $_GET['code']

代码显示在界面上。这时,通过右上角按钮中的复制链接,链接如下:

http://mascot.duapp.com/oauth2.php?代码=00b 788 E3 b 42043 c 8459 a 57 a8d 8 ab 5d 9 fstate=1

我们成功地获得了代码。

注意:如果绑定时出现这样的接口,说明参数是错误的,需要重新检查参数

3.访问令牌的交换代码

作为网页授权访问令牌页面构建的交换:

https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPIDsecret=SECRETcode=CODEgrant _ type=authorization _ code

参数描述

参数是否必须注明appid是微信官方账号的唯一标识,secret是微信官方账号的appsecret码是第一步得到的码参数,grant_type是授权_码:在此填写上一步得到的值

施工请求网址如下:

https://api.weixin.qq.com/sns/oauth2/access_token?appid=wx 8888888888888 secret=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacode=00b 788 E3 b 42043 c 8459 a 57 a8d 8 ab 5d 9 grant _ type=authorization _ code

您可以在浏览器中直接执行此语句:

这里是关键,即通过上面的url获取json数据的代码

$ ch=curl _ init();curl_setopt($ch,CURLOPT_URL,$ URL);curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);//要求结果为字符串并输出到屏幕curl _ setopt ($ ch,curl opt _ header,0);//不要用http头来加快效率curl _ setopt ($ ch,curl opt _ user agent,' Mozilla/5.0(兼容;MSIE 5.01windows NT 5.0)');curl_setopt($ch,CURLOPT_TIMEOUT,15);curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE);//https请求不验证证书和hosts col _ setopt($ ch,curlopt _ SSL _ verifyhost,false);$ output=curl _ exec($ ch);curl _ close($ ch);$ JSON code=JSON _ decode($ output);//对字符串进行JSON格式的编码$ array=get _ object _ vars($ jsondecode);//转换为数组//红色两行是重点。对于https,我在echo $array纠缠了一天多;)

获得以下json数据:

{ ' access _ token ' : ' oezxceibsksxw 0 eoyliaeasrgmyd1a wcffdhgb4 fhs _ kkf2 cotgj2cbnukqqvj-g0zwee 5-ubjbz 941 eopqdy5ss _ GCS 2z 40 nvu 99 y5 ai 1 bw 2 uqn-2jxoblim5d 6 L9 rivm8 VG 8 cbailpwa8 VW ',' expires_in': 7200,' refresh _ token ' :

参数描述了access_token网页授权接口调用凭证。注意:此access_token不同于基本支持的access_token。expire _ in access _ token接口调用凭证超时。Unit(第二个)refresh_token用户刷新access_token openid用户的唯一标识符。请注意,当用户在不关注微信官方账号的情况下访问微信官方账号的网页时,会生成一个用户授权的范围以及微信官方账号中唯一的OpenID范围用户,用逗号(,)分隔。因此,我们通过代码成功地交换了access_token和refresh_token。

刷新访问令牌

官方文档中提到了刷新access_token的功能,但并不是必须的,第一次可以忽略。

网址请求方法如下:

https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=APPIDgrant _ type=REFRESH _ TOKEN REFRESH _ TOKEN=REFRESH _ TOKEN

参数描述

参数一定要注明appid是微信官方账号的唯一标识吗?grant_type填充为refresh_token refresh_token填充为通过access_token获得的refresh_token。参数结构如下:https://api.weixin.qq.com/sns/oauth2/refresh_token? appid=wx 8888888888888 grant _ type=refresh _ token refresh _ token=oezxceibsksxw 0 eoylieasr0 gmyd 1 awffdhgb4 fhs _ kkf2cotgj2cbnukqvj-g0zwee 5-ubjbz 941 eopqdqy5s _ GCS 2z 40 DNV u 99 y5 czpawzksuz _ 6x _ tfkloxlu 7k m 2232 wz

在浏览器中执行以获得与以前相同格式的json数据

4.使用access_token获取用户信息

请求方法:

https://api.weixin.qq.com/sns/userinfo?access _ token=access _ token OpenID=OpenID参数描述

参数描述access_token网页授权接口调用证书。注意:此access_token不同于基本支持的access_token。openid用户的唯一标识符构造url如下:

https://api.weixin.qq.com/sns/userinfo?access _ token=oezxceibsksxw 0 eoylieasr0 gmyd1a wcffdhgb4 fhs _ kkf2 cotgj2cbnukqqvj-g0zwee 5-ubjbz 941 eopqd y5ss _ GCS 2z 40 nvu 99 y5 ai 1 bw 2 uqn-2jxoblim5d 6l 9 rimvm 8 vg8 cbailpwa8 vwopenid=olvppjqs9 bhvzwpj5a-vtyaxiglc

您可以在浏览器中直接执行此语句:

获得以下json数据:

{ ' OpenID ' : ' olvppjqs 9bhvzwpj5a-vtyax3glc ','昵称' : '广场时代','性' : 1,'语言' :' zh _ cn ','城市' : '深圳' '省' : '广东','国家' : 'CN ',Head imgur ' http://wx . qlogo . CN/mmoppen/utpkyf 69 vab

参数描述openid用户的唯一标识符,昵称用户昵称性别用户的性别,当值为1时,是男性,当值为2时,是女性,当值为0时,是未知省份用户的个人资料填写的省份,普通用户的个人资料填写的城市国家,例如,中国是cnhead imgur用户的负责人。最后一个值代表方形头像的大小(0、46、64、96和132可选,0代表640*640方形头像)。当用户没有头像时,此项为空权限用户权限信息,json数组,如微信Woka用户(中国联通),与我个人微信信息一致。

到目前为止,微信公众号金宝在没有输入我的账号和密码的情况下,已经获取了我的个人信息,包括昵称、性别、国家、省份、城市、个人头像和权限列表。

完成了完整的OAuth2认证。

三、详细论证

关注方北工作室(二维码见下图),回复“授权”,返回图文消息,点击图片

在确认页面上,单击“允许”

弹出获得的结果(图片是防盗的,不能直接显示,可以本地下载后显示)

以上是关于微信的发展,整理网页授权用户的信息,后续继续补充相关信息。感谢您对本网站的支持!

版权声明:微信开发网页授权获取用户基本信息是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。