【PHP】微信获取用户信息

在本文中,特别要注意的是有两个不同的Access Token,他们产生的方式不一样,一种是使用AppID和AppSecret获取的access_token,一种是OAuth2.0授权中产生的access_token,分别称为全局Access Token和授权Access Token。

一、 通过全局Access Token获取用户基本信息
1. 用户关注以及回复消息的时候,均可以获得用户的OpenID

<xml>
  <ToUserName><![CDATA[gh_b629c48b653e]]></ToUserName>
  <FromUserName><![CDATA[ollB4jv7LA3tydjviJp5V9qTU_kA]]></FromUserName>
  <CreateTime>1372307736</CreateTime>
  <MsgType><![CDATA[event]]></MsgType>
  <Event><![CDATA[subscribe]]></Event>
  <EventKey><![CDATA[]]></EventKey>
</xml>

其中的FromUserName就是OpenID
2. 然后使用access_token接口,请求获得全局Access Token
https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
返回结果:

{
  "access_token": "NU7Kr6v9L9TQaqm5NE3OTPctTZx797Wxw4Snd2WL2HHBqLCiXlDVOw2l-Se0I-WmOLLniAYLAwzhbYhXNjbLc_KAA092cxkmpj5FpuqNO0IL7bB0Exz5s5qC9Umypy-rz2y441W9qgfnmNtIZWSjSQ",
  "expires_in": 7200
}

3. 再使用全局ACCESS_TOKEN获取OpenID的详细信息
https://api.weixin.qq.com/cgi-bin/user/info?access_token=ACCESS_TOKEN&openid=OPENID
返回结果:

{
  "subscribe": 1,
  "openid": "oLVPpjqs2BhvzwPj5A-vTYAX4GLc",
  "nickname": "刺猬宝宝",
  "sex": 1,
  "language": "zh_CN",
  "city": "深圳",
  "province": "广东",
  "country": "中国",
  "headimgurl": "http://wx.qlogo.cn/mmopen/JcDicrZBlREhnNXZRudod9PmibRkIs5K2f1tUQ7lFjC63pYHaXGxNDgMzjGDEuvzYZbFOqtUXaxSdoZG6iane5ko9H30krIbzGv/0",
  "subscribe_time": 1386160805
}

这种方式最适合用户在关注的时候,回复一条欢迎关注+用户昵称的信息

二、 通过OAuth2.0方式弹出授权页面获得用户基本信息
1. 首先配置回调域名

2. 构造请求url如下:
https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx8888888888888888&redirect_uri=REDIRECT_URI&response_type=code&scope=snsapi_userinfo&state=1#wechat_redirect
scope=snsapi_userinfo 表示应用授权作用域为请求用户信息
3. 回调页面得到链接如下,回调url中将包含参数code
REDIRECT_URI?code=00b788e3b42043c8459a57a8d8ab5d9f&state=1
4. 再使用code换取oauth2的授权access_token
https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID &secret=SECRET&code=00b788e3b42043c8459a57a8d8ab5d9f&grant_type=authorization_code
获取授权access_token
注:如果此应用已经绑定在开放平台下面,则返回结果会出现union_id参数

{
"access_token": "OezXcEiiBSKSxW0eoylIeAsR0GmYd1awCffdHgb4fhS_KKf2CotGj2cBNUKQQvj-G0ZWEE5-uBjBz941EOPqDQy5sS_GCs2z40dnvU99Y5AI1bw2uqN--2jXoBLIM5d6L9RImvm8Vg8cBAiLpWA8Vw",
"expires_in": 7200,
"refresh_token": "OezXcEiiBSKSxW0eoylIeAsR0GmYd1awCffdHgb4fhS_KKf2CotGj2cBNUKQQvj-G0ZWEE5-uBjBz941EOPqDQy5sS_GCs2z40dnvU99Y5CZPAwZksiuz_6x_TfkLoXLU7kdKM2232WDXB3Msuzq1A",
"openid": "oLVPpjqs9BhvzwPj5A-vTYAX3GLc",
"scope": "snsapi_userinfo,"
}

 

5. 再使用授权Access Token获取用户信息
https://api.weixin.qq.com/sns/userinfo?access_token=OezXcEiiBSKSxW0eoylIeAsR0GmYd1awCffdHgb4fhS_KKf2CotGj2cBNUKQQvj-G0ZWEE5-uBjBz941EOPqDQy5sS_GCs2z40dnvU99Y5AI1bw2uqN--2jXoBLIM5d6L9RImvm8Vg8cBAiLpWA8Vw&openid=oLVPpjqs9BhvzwPj5A-vTYAX3GLc
返回结果

{
  "openid": "oLVPpjqs9BhvzwPj5A-vTYAX3GLc",
  "nickname": "刺猬宝宝",
  "sex": 1,
  "language": "zh_CN",
  "city": "深圳",
  "province": "广东",
  "country": "中国",
  "headimgurl": "http://wx.qlogo.cn/mmopen/utpKYf69VAbCRDRlbUsPsdQN38DoibCkrU6SAMCSNx558eTaLVM8PyM6jlEGzOrH67hyZibIZPXu4BK1XNWzSXB3Cs4qpBBg18/0",
  "privilege": []
}

 


这种方法适合,
1. 在朋友圈中获得用户的信息.
2. 在网页中获得用户信息。
3. 在自定义菜单中获得用户信息。

三、 通过OAuth2.0方式不弹出授权页面获得用户基本信息
此种方法,只是将第二种方法中的scope=snsapi_userinfo 替换成
scope=snsapi_base
然后使用全局ACCESS_TOKEN获取OpenID的详细信息

 

转载于:https://www.cnblogs.com/NicholasFugui/p/7681509.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值