【问题标题】:oauthplayground invalid grant, trying to get refresh token google oauthoauthplayground 无效授权,试图获取刷新令牌谷歌 oauth
【发布时间】:2020-07-26 05:27:11
【问题描述】:

我获得了临时访问令牌、serverAuthCode、Web 客户端 ID 及其秘密,我正在尝试从 oathplayground 获取刷新令牌,但我收到了无效授权错误。我已经多次重新检查令牌,但仍然遇到相同的错误。以下是截图:

我可以做些什么来获得刷新令牌?有关更多信息,我正在使用 react-native-google-sign-in 库,从这个库中,我得到了 1.access_token、ServerAuthCode。从 Google Developers 控制台,我得到了 1.Web Client Id 2.Client Secret ,我在 react 本机应用程序中使用这些凭据,并且我成功获取了令牌,但问题是有时它们可​​以工作,而且大多数时候我得到当我尝试使用访问令牌时出现“无效凭据”错误,这是因为访问令牌已过期,这就是我需要刷新令牌的原因。如果您知道为什么我无法获取刷新令牌或如何使用其他方法获取刷新令牌,请告诉我。

【问题讨论】:

  • 您的应用中使用了哪个流程?
  • 基本上,用户在应用程序中使用他的电子邮件帐户之一通过身份验证进行升级,然后要求他允许使用谷歌驱动器上传文件的权限。授予权限后,我得到了 access_token、serverAuthCode 和用户信息。

标签: oauth oauth-2.0 google-signin google-oauth


【解决方案1】:

我明白我做错了什么,我使用的 serverAuthCode 不是新的,它应该是最新的 + 第一次当你允许应用程序获得权限时,它只会在你第一次工作后将其交换为刷新令牌,它将无法再次工作,并且总是会给您 grant_error。因此,在获得刷新令牌后,您可以获得新的刷新访问令牌。我正在使用 react-native-google-sign-in 并且需要刷新令牌,请阅读以下内容以了解更多信息。

对于 React-native-google-sign-in : 您将从GoogleSignin.getTokens(); 收到的访问令牌只会持续大约一个小时,要获得一个新的access_token,我们需要将serverAuthCode 发送到https://oauth2.googleapis.com/token 字段:client_idclient_secretcode(this是 serverAuthCode), grant_type(它的值应该是authorization_code), redirect_uri(可以从开发者控制台设置)。请记住,仅在您第一次允许您的应用程序获得权限时才使用您第一次尝试时获得的serverAuthCode,否则您每次都会收到grant_error。获得refresh_token后,我们需要使用刚刚获得的刷新令牌来获得新的access_token,所以现在只需将grant_type的值从authorization_code替换为refresh_token,同时替换@987654335的值@ 字段到 refresh_token ,填写它的值并向相同的 url 发送一个 post 请求,你会得到一个新的 access_token ,有效期为 1 小时。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-10
    • 2015-10-11
    • 2015-05-17
    • 2017-12-25
    • 1970-01-01
    • 2020-04-24
    • 2018-10-01
    相关资源
    最近更新 更多