zoukankan      html  css  js  c++  java
  • 【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的详细信息

  • 相关阅读:
    【leetcode】1630. Arithmetic Subarrays
    【leetcode】1629. Slowest Key
    【leetcode】1624. Largest Substring Between Two Equal Characters
    【leetcode】1620. Coordinate With Maximum Network Quality
    【leetcode】1619. Mean of Array After Removing Some Elements
    【leetcode】1609. Even Odd Tree
    【leetcode】1608. Special Array With X Elements Greater Than or Equal X
    【leetcode】1603. Design Parking System
    【leetcode】1598. Crawler Log Folder
    Java基础加强总结(三)——代理(Proxy)Java实现Ip代理池
  • 原文地址:https://www.cnblogs.com/NicholasFugui/p/7681509.html
Copyright © 2011-2022 走看看