微信授权登录问题汇总

微信授权登录问题汇总

标签(空格分隔): 微信


关于token

微信的token有四种,第三方开放平台的component_access_token、第三方平台对公众号授权令牌authorizer_access_token、公众号的基础access_token、用户网页授权的access_token。

  • 第三方开放平台的component_access_token
    • 第三方开发平台自己的token,根据微信每10分钟推送的component_verify_ticket获取。
  • 第三方平台对公众号授权令牌authorizer_access_token
    • 用于第三方平台调用公众号接口的token,公众号授权成功后获取。
  • 公众号的基础access_token
    • 公众号自己调用接口的token,由appid和appsecrect获取。
  • 用户网页授权的access_token
    • 用户发起网页授权后获取,用于获取用户基本信息。

注意

  1. 第三方开发平台发起代替公众号发起网页授权,要用这个页面中的接口。https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419318590&token=a50c64c7b0ed6a462aabbb057ef5d4d527986f12&lang=zh_CN
  2. 公众号各接口调用限制。https://mp.weixin.qq.com/wiki/0/2e2239fa5f49388d5b5136ecc8e0e440.html
  3. 全局返回码说明。https://mp.weixin.qq.com/wiki/17/fa4e1434e57290788bde25603fa2fcbd.html
  4. 公众号获取用户信息,有两个接口。
    • 一个是获取粉丝(即已关注)信息的接口(https://mp.weixin.qq.com/wiki/14/bb5031008f1494a59c6f71fa0f319c66.html),这个接口只能获取已关注用户的信息;
    • 一个是发起网页授权获取用户信息(https://mp.weixin.qq.com/wiki/17/c0f37d5704f0b64713d5d2c37b468d75.html)这个是公众号没授权给开发平台时自己用的,如果已授权第三方,用1中说的接口。这个接口需要用户确认授权,授权后即使用户没关注公众号,也能获取用户信息,但不能获取用户关注状态。而且这个接口不管用户是否已关注,都会让用户再确认授权。授权后会得到用户授权的一个access_token,可以保存并刷新这个token,就不用再授权了。

FAQ

  1. 未关注未授权的新用户发起snsapi_base静默网页授权可以获取code,并以此获取用户access_token,然后获取用户openid和unionid.但是不能获取用户信息,会返回48001错误。并且调用公众号获取用户信息接口也只能获取关注状态、openid和unionid。

  2. 下面测试已关注用户是否可以直接调用公众号获取用户信息的接口,该接口每个公众号有500W次限制。
    关注后,使用静默网页授权可以获取用户openid,然后可以调用公众号获取用户信息的接口,来获取用户详情。

  3. 未授权已关注用户调用网页授权获取用户信息接口,会回复48001错误,表示未授权。

  4. 然后测试已关注用户直接发起snsapi_userinfo网页授权是否还需要确认。
    未授权已关注的用户直接用链接打开发起snsapi_userinfo网页授权也需要用户确认。但是微信公众文档中说

    对于已关注公众号的用户,如果用户从公众号的会话或者自定义菜单进入本公众号的网页授权页,即使是scope为snsapi_userinfo,也是静默授权,用户无感知

但是不确定是公众号自己发起的网页授权才有作用,开发平台代公众号发起的不起作用?

自我总结的开放平台代公众号获取用户信息的流程

  1. 先用开发平台代公众号发起网页授权,使用snsapi_base静默授权,获取用户的openid。
  2. 调用公众号获取粉丝信息的接口,如果用户未关注公众号,弹出二维码让用户关注,关注后再获取用户信息并保存,使用户登录。

你可能感兴趣的:(微信)