V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
XiLemon
V2EX  ›  程序员

微信的 OAuth2.0 拿到的 access_token 除了获取用户信息,还能做什么呢

  •  
  •   XiLemon · 2022-03-01 00:06:37 +08:00 · 2631 次点击
    这是一个创建于 994 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如题,根据微信开发文档了解到,移动应用、网站应用中的登录,还有微信公众号开发中的网页授权,这些功能会拿到 access_token ,但是看起来只能用来获取用户信息(假设 scope 为 snsapi_userinfo)。看开发文档,也没有其他接口可以调用,所以这个 access_token 还能拿来获取其他资源么?

    另外了解到,公众号板块还可以通过开发者 appid 和 secret 获取 access_token ,这个看起来是用来操作公众号的,跟 OAuth2.0 流程中拿到的 access_token 并不一样。

    有比较熟悉微信开发的老哥,帮忙解答一下,感谢!

    以下是参考的微信开发文档:

    1. 移动应用-微信登录: https://developers.weixin.qq.com/doc/oplatform/Mobile_App/WeChat_Login/Development_Guide.html
    2. 网站应用-微信登录: https://developers.weixin.qq.com/doc/oplatform/Website_App/WeChat_Login/Wechat_Login.html
    3. 公众号网页授权: https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_webpage_authorization.html
    4. 小程序登录: https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/login.html

    另外还有个问题,如果有开放平台换绑的情况,那么怎么才能比较好的处理 unionid 会变这种情况呢?

    18 条回复    2022-03-04 05:36:37 +08:00
    cxy2244186975
        1
    cxy2244186975  
       2022-03-01 04:27:21 +08:00 via Android
    拿到你的微信原始 ID 然后通过接口可查询你的微信号 具体能干啥、我就不多说了 ipa 协议
    XiLemon
        2
    XiLemon  
    OP
       2022-03-01 07:24:27 +08:00 via iPhone
    @cxy2244186975 不好意思,没太理解您说的内容
    1. 原始 ID 指的是什么,unionid 还是 openid 。
    2. 通过接口查询微信号,这里的微信号指的又是什么呢,是哪个接口能否明确说明一下
    3. ipa 协议又是用来做什么的,谷歌了一下,看起来像是安装 iOS App 的
    airyland
        3
    airyland  
       2022-03-01 07:57:01 +08:00
    1 楼没做过相关开发的人就不要误导别人了。
    openid 无论什么时候最多能拿到昵称、头像等信息。微信号一直就不可能通过接口得到。
    和 ipa 协议没任何关系。

    授权流程适用于非订阅号,用于在不需要关注公众号的情况下获取用户基本信息。
    appid 和 secret 获取 access_token 用于公众号各种接口操作,以前也可以获取到已关注用户的昵称和头像,现在将昵称和头像列为非主动授权的敏感信息无法通过 openid 获取。
    XiLemon
        4
    XiLemon  
    OP
       2022-03-01 08:50:54 +08:00 via iPhone
    @airyland 感谢回复,所以对于授权流程拿到的 access_token ,目前微信只提供了获取用户信息的能力,是这样么
    SilenceLL
        5
    SilenceLL  
       2022-03-01 09:04:06 +08:00
    我也没找到其他接口使用了这个 token 。以前用 snsapi_base 拿到 code ,然后通过 https://api.weixin.qq.com/sns/oauth2/access_token 接口可以获取 openid,openid 再通过接口 https://api.weixin.qq.com/cgi-bin/user/info 可以获取用户信息,现在这个接口获取用户信息返回的都是空字符串了。只能在第一个授权用户信息的地方 scope 改为 snsapi_userinfo ,再获取用户 openid+access_token,再获取用户昵称之类的个人信息。
    guaguaguaxia1
        6
    guaguaguaxia1  
       2022-03-01 09:21:25 +08:00
    我觉得你可以看下 Oauth2 ,不必局限于微信
    XiLemon
        7
    XiLemon  
    OP
       2022-03-01 09:31:27 +08:00 via iPhone
    @guaguaguaxia1 OAuth2 已经看过了,现在是想知道的是:除了用户基本信息之外,还可以获取哪些资源
    XiLemon
        8
    XiLemon  
    OP
       2022-03-01 09:34:44 +08:00 via iPhone
    @SilenceLL 您提到的第二个接口是微信公众号的后台接口,文档上有说明,已经不提供用户基本信息了。我理解现在获取用户信息必须通过 OAuth2 获取用户授权。
    sunhelter
        9
    sunhelter  
       2022-03-01 10:01:00 +08:00
    应用的 token 可以用来获取授权用户的 openid[用于当前应用的身份辨识]和 unionid[用于当前应用绑定的三方平台比如公众号]

    公众号 token 可以用来获取关注用户的 openid 和 unionid ,然后你自己根据 unionid 把人关联起来,就可以做到在公众号中推送应用的信息,比如下单、物流之类的

    至于 unionid 会变,那只能接入手机号授权,根据客户的手机号来确定同一用户了
    sunny1688
        10
    sunny1688  
       2022-03-01 12:15:10 +08:00
    scope 是 snsapi_userinfo ,这是微信提供的,我是觉得你是想问 scope 的除了 snsapi_userinfo 还有哪些可选,肯定是有的,比如腾讯内部可能还会有 user_mobile (获取手机号),获取实名认证,身份证号等,这都是有可能的,只不过不会随意公开出来而已
    sunny1688
        11
    sunny1688  
       2022-03-01 12:16:26 +08:00
    微信登录的 access_token 和用 AppID ,secret 去换的 access_token 不是一个,两个不能混用
    XiLemon
        12
    XiLemon  
    OP
       2022-03-01 12:22:19 +08:00 via iPhone
    @sunny1688
    嗯,差不多的意思,就是能有哪些 scope ,目前看就只有基本用户信息。

    两个 access_token 不能混用这个我倒是了解的。
    XiLemon
        13
    XiLemon  
    OP
       2022-03-01 12:26:50 +08:00 via iPhone
    @sunhelter 了解,看来没有啥更好的办法来处理换绑开放平台
    cxy2244186975
        14
    cxy2244186975  
       2022-03-02 17:59:55 +08:00 via Android
    @XiLemon 建议百度一下微信 ipa 协议
    cxy2244186975
        15
    cxy2244186975  
       2022-03-02 18:01:07 +08:00 via Android
    @airyland 谁跟你说 iipa 协议只能拿这个那些信息的。一个协议的授权,每个月就是几万块。
    我做微信裂变的 我不知道这些东西?
    cxy2244186975
        16
    cxy2244186975  
       2022-03-02 18:02:15 +08:00 via Android
    @airyland 获取那些信息都是基操🙃
    airyland
        17
    airyland  
       2022-03-02 20:09:03 +08:00
    @cxy2244186975 楼主问的是合规的官方接口相关的开发问题。
    ipa 协议、协议几万块、你做裂变的,跟我说的又有什么关系,跟楼主的问题又有什么关系。
    cxy2244186975
        18
    cxy2244186975  
       2022-03-04 05:36:37 +08:00 via Android
    @airyland 注意看清你自己的题、我是在回复你、回复 lz 只是围绕主题衍生出来的事件
    我说不合规的跟主题大相径庭了么
    而且我做裂变也不是跟你说、只是再纠正你、我并没有误导 lz
    只是这些东西你不懂
    相当于是科普了
    还有你说的微信号就不可能通过接口得到、说明你还趴在技术的井沿
    感兴趣、可以去了解了解
    别出糗了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3087 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 00:34 · PVG 08:34 · LAX 16:34 · JFK 19:34
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.