美文网首页程序员
微信公众号开发 - 静默授权获取用户信息

微信公众号开发 - 静默授权获取用户信息

作者: _既白_ | 来源:发表于2018-11-28 16:49 被阅读5次

    基本概念:

    openid是什么,一个微信号与一个公众号对应一个固定不变的openid。所以一个微信号在一个公众号下的openid是不变的,如果换了一个对应的公众号,那就是另一个openid了。且只有在微信自带浏览器中打开的项目才可获取到。

    UnionID是什么,如果开发者拥有多个移动应用,网站应用,公众号和小程序,可以通过UnionID来区分用户的唯一性,因为只要是同一个微信开发平台账号下的移动应用,网站应用,公众号和小程序,用户的UnionID是唯一的。换句话说,同一个用户,对同一个微信开发平台的不同应用,UnionID是唯一的。

    准备条件,一个公众号、一个外网可访问的域名、该公众号的AppIDAppSecret、设置网页授权域名(登陆公众平台 设置----->公众号设置------>功能设置----->网页授权域名 按步骤操作并设置就好),这个域名就是你获取openid的web项目发布的域名,这里注意服务器请一定跑在80端口。

    第一步,获取code

    
    // 授权访问链接
    https://open.weixin.qq.com/connect/oauth2/authorize?appid=XXXXXXXX&redirect_uri=http://test-recycle-h5.jxypapp.com&response_type=code&scope=snsapi_base&state=%7B%22id%22%3D%221%22%2C%22name%22%3A%22xiaoming%22%7D#wechat_redirect
    
    // 授权成功后,重定向链接
    http://test-recycle-h5.jxypapp.com/?code=0215ZMRH0rVjli29oYTH0exORH05ZMRz&state=%7B%22id%22%3D%221%22%2C%22name%22%3A%22xiaoming%22%7D
    
    

    参数解释:

    • appid: 公众号appid.
    • redirect_uri: 填写微信识别成功之后,跳转的url(需要encode编码)。
    • response_type: 就填code,不用修改。
    • scope: 可填(snsapi_base (静默授权)和snsapi_userinfo(弹出授权页面的授权方式)两个值,其中前者为只获得openid,不需要用户授权,后者为获得用户信息,需要用户授权)
    • state: 自定义参数,重定向后会带上state参数,开发者可以填写a-zA-Z0-9的参数值,最多128字节(传json数据需要encode编码)。
    • #wechat_redirect: 指定在微信内跳转,平时可以不填,在302重定向时,必须填!

    注意事项:

    • redirect_uri需要encode编码,否则页面会显示“redirect_ur参数错误!”
    • redirect_uri网址的域名必须是,你在微信公众平台账号中填写授权回调页的域名,具体需要登录微信公众平台后台,在用户信息那里点击修改,填上自己的域名即可,注意:授权回调页中的域名没有http://

    第二步,获取 openid

    https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code 
    

    参数解释:

    • appid :同上
    • secret :同上
    • code :填写第一步获取的code参数
    • grant_type :填写为authorization_code

    注意事项:

    • h5 页面如果直接调用次接口,可能存在跨域问题,可以让后台调用此接口

    返回结果:

    { 
    "access_token":"ACCESS_TOKEN",    
    
     "expires_in":7200,    
    
     "refresh_token":"REFRESH_TOKEN",    
    
     "openid":"OPENID",    
    
     "scope":"SCOPE" 
    } 
    

    第三步,获取access_token

    access_token是公众号的全局唯一接口调用凭据,公众号调用各接口时都需使用access_token。开发者需要进行妥善保存。access_token的存储至少要保留512个字符空间。access_token的有效期目前为2个小时,需定时刷新,重复获取将导致上次获取的access_token失效。

    接口说明

    https请求方式: GET
    https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
    

    参数说明

    • grant_type:获取access_token填写client_credential
    • appid:第三方用户唯一凭证
    • secret:第三方用户唯一凭证密钥,即appsecret

    返回结果

    {"access_token":"ACCESS_TOKEN","expires_in":7200}
    

    第四步,获取用户信息

    接口调用请求说明
    http请求方式: GET
    https://api.weixin.qq.com/cgi-bin/user/info?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN
    

    参数解释:

    • access_token 调用接口凭证 ,第三步获取的access_token
    • openid 普通用户的标识,对当前公众号唯一,第二步获取的openid
    • lang 返回国家地区语言版本,zh_CN 简体,zh_TW 繁体,en 英语
    
    {
        "subscribe": 1,  // 是否关注此公共号,0-未关注,1-关注
        "openid": "o6_bmjrPTlm6_2sgVt7hMZOPfL2M",  //用户的标识,对当前公众号唯一
        "nickname": "Band",  // 用户的昵称
        "sex": 1,  //用户的性别,值为1时是男性,值为2时是女性,值为0时是未知
        "language": "zh_CN",  // 用户的语言,简体中文为zh_CN
        "city": "广州",  // 用户所在城市
        "province": "广东",  // 用户所在省份
        "country": "中国",  // 用户所在国家
        "headimgurl":"http://thirdwx.qlogo.cn/mmopen/g3MonUZtNHkdmzicIlibx6iaFqAc56vxLSUfpb6n5WKSYVY0ChQKkiaJSgQ1dZuTOgvLLrhJbERQQ4eMsv84eavHiaiceqxibJxCfHe/0", //用户头像
        "subscribe_time": 1382694957, // 用户关注时间,为时间戳。如果用户曾多次关注,则取最后关注时间
        "unionid": " o6_bmasdasdsad6_2sgVt7hMZOPfL" ,//只有在用户将公众号绑定到微信开放平台帐号后,才会出现该字段。
        "remark": "", // 公众号运营者对粉丝的备注,公众号运营者可在微信公众平台用户管理界面对粉丝添加备注
        "groupid": 0, // 用户所在的分组ID(兼容旧的用户分组接口)
        "tagid_list":[128,2], 用户被打上的标签ID列表
        "subscribe_scene": "ADD_SCENE_QR_CODE", //返回用户关注的渠道来源,ADD_SCENE_SEARCH 公众号搜索,ADD_SCENE_ACCOUNT_MIGRATION 公众号迁移,ADD_SCENE_PROFILE_CARD 名片分享,ADD_SCENE_QR_CODE 扫描二维码,ADD_SCENEPROFILE LINK 图文页内名称点击,ADD_SCENE_PROFILE_ITEM 图文页右上角菜单,ADD_SCENE_PAID 支付后关注,ADD_SCENE_OTHERS 其他
        "qr_scene": 98765,
        "qr_scene_str": ""
    }
    

    参考链接:

    https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140839
    https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140183

    相关文章

      网友评论

        本文标题:微信公众号开发 - 静默授权获取用户信息

        本文链接:https://www.haomeiwen.com/subject/whtzqqtx.html