Android 微信第三方登录 获取不到 AccessToken, OAuth 2 出问题了?

2017-01-21 18:42:42 +08:00
 harchiko

今天在搞微信第三方登录,登录之后获取 AccessToken ,根据微信的文档:文档地址

请求完 code 之后代入, Get https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code 来获取到 AccessToken ,得到的返回是

{"errcode":40029,"errmsg":"invalid code, hints: [ req_id: FCCDrA0148s112 ]"}

之前这样请求时有正常返回内容的,而且我也多次检查了返回 code , APPID , AppSecret 的正确性,有没有小伙伴帮忙看下是哪里出了问题。

我把我这边能想到的问题都检查过了,现在有点怀疑是微信那边的问题。

11639 次点击
所在节点    Android
8 条回复
morewe
2017-01-21 19:24:15 +08:00
是不是你不小心同一个 code 请求了 2 次?或者超过了 5 分钟?
harchiko
2017-01-21 19:26:07 +08:00
@morewe 是的,我检查了下,同一个不能请求两次吗?
morewe
2017-01-21 19:28:43 +08:00
@harchiko 文档里写了啊,一个 code 只能用 1 次,你没仔细看么。。话说我重新看下文档,现在的有效期是 10 分钟了。
morewe
2017-01-21 19:31:35 +08:00
F.A.Q
1. 什么是授权临时票据( code )?
答:第三方通过 code 进行获取 access_token 的时候需要用到, code 的超时时间为 10 分钟,一个 code 只能成功换取一次 access_token 即失效。 code 的临时性和一次保障了微信授权登录的安全性。第三方可通过使用 https 和 state 参数,进一步加强自身授权登录的安全性。
harchiko
2017-01-21 19:32:27 +08:00
@morewe 我脑子抽了,把这个 code 跟 AccessToken 搞混了。
morewe
2017-01-21 19:34:20 +08:00
@harchiko 没事,找到原因而且是正常原因就好,就怕遇到奇葩问题。
zhuyao
2017-01-22 08:24:15 +08:00
code 用一次失效
xiaoyang7545
2017-01-22 17:41:10 +08:00
关于 code 不知道是不是 OAuth 2 的硬性要求,我用的 box dropbox googledrive onedrive 的授权都是一次无效

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

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

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

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

© 2021 V2EX