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

2022-03-01 00:06:37 +08:00
 XiLemon

如题,根据微信开发文档了解到,移动应用、网站应用中的登录,还有微信公众号开发中的网页授权,这些功能会拿到 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 会变这种情况呢?

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

授权流程适用于非订阅号,用于在不需要关注公众号的情况下获取用户基本信息。
appid 和 secret 获取 access_token 用于公众号各种接口操作,以前也可以获取到已关注用户的昵称和头像,现在将昵称和头像列为非主动授权的敏感信息无法通过 openid 获取。
XiLemon
2022-03-01 08:50:54 +08:00
@airyland 感谢回复,所以对于授权流程拿到的 access_token ,目前微信只提供了获取用户信息的能力,是这样么
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
2022-03-01 09:21:25 +08:00
我觉得你可以看下 Oauth2 ,不必局限于微信
XiLemon
2022-03-01 09:31:27 +08:00
@guaguaguaxia1 OAuth2 已经看过了,现在是想知道的是:除了用户基本信息之外,还可以获取哪些资源
XiLemon
2022-03-01 09:34:44 +08:00
@SilenceLL 您提到的第二个接口是微信公众号的后台接口,文档上有说明,已经不提供用户基本信息了。我理解现在获取用户信息必须通过 OAuth2 获取用户授权。
sunhelter
2022-03-01 10:01:00 +08:00
应用的 token 可以用来获取授权用户的 openid[用于当前应用的身份辨识]和 unionid[用于当前应用绑定的三方平台比如公众号]

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

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

两个 access_token 不能混用这个我倒是了解的。
XiLemon
2022-03-01 12:26:50 +08:00
@sunhelter 了解,看来没有啥更好的办法来处理换绑开放平台
cxy2244186975
2022-03-02 17:59:55 +08:00
@XiLemon 建议百度一下微信 ipa 协议
cxy2244186975
2022-03-02 18:01:07 +08:00
@airyland 谁跟你说 iipa 协议只能拿这个那些信息的。一个协议的授权,每个月就是几万块。
我做微信裂变的 我不知道这些东西?
cxy2244186975
2022-03-02 18:02:15 +08:00
@airyland 获取那些信息都是基操🙃
airyland
2022-03-02 20:09:03 +08:00
@cxy2244186975 楼主问的是合规的官方接口相关的开发问题。
ipa 协议、协议几万块、你做裂变的,跟我说的又有什么关系,跟楼主的问题又有什么关系。
cxy2244186975
2022-03-04 05:36:37 +08:00
@airyland 注意看清你自己的题、我是在回复你、回复 lz 只是围绕主题衍生出来的事件
我说不合规的跟主题大相径庭了么
而且我做裂变也不是跟你说、只是再纠正你、我并没有误导 lz
只是这些东西你不懂
相当于是科普了
还有你说的微信号就不可能通过接口得到、说明你还趴在技术的井沿
感兴趣、可以去了解了解
别出糗了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/837031

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX