【问题标题】:Sharing google oauth verification code between android client and rails server在android客户端和rails服务器之间共享google oauth验证码
【发布时间】:2014-02-19 22:57:24
【问题描述】:

我正在尝试在我们的移动应用中通过 google+ 设置登录。

所以我们有一个 Android 客户端,它为 oauth google api 获取验证码。

然后它将verification_code发送回rails,rails负责获取访问令牌/刷新令牌对,然后与api对话。

我在验证验证码时遇到问题。

一开始它会返回

{
  "error" : "redirect_uri_mismatch"
}

所以在阅读了一下之后,我们似乎不应该为 android 令牌指定一个 redirect_uri,但是当我尝试将 redirect_uri 设置为 nil 时它失败了

{
  "error" : "invalid_request",
  "error_description" : "Missing parameter: redirect_uri"
}

我还尝试将其设置为空字符串而不是 nil 并再次获得 uri_mismatch。

我尝试使用通过 oauth 游乐场获得的验证码进行常规身份验证,并且它可以从那里工作。

一点代码

@authorization = CLIENT_SECRETS.to_authorization
@authorization.clear_credentials!
@authorization.grant_type = 'authorization_code'
@authorization.code = authorization_code
@authorization.redirect_uri = nil
@authorization.fetch_access_token!

任何帮助将不胜感激!

【问题讨论】:

    标签: google-api google-oauth google-api-ruby-client


    【解决方案1】:

    您发送的重定向 URI 需要与您在 google apis console 中设置的匹配。

    API 和身份验证 -> 凭据

    【讨论】:

      【解决方案2】:

      好吧,实际上它有点隐藏,但我找到了。

      因此,您需要将重定向 uri 设置为凭据中设置的“带外”uri。

      urn:ietf:wg:oauth:2.0:oob
      

      客户端实际上并没有将其设置为该值,但我猜谷歌将其默认设置为它。

      当前的 signet gem 不允许将 redirect_uri 设置为该值,因此我在主 repo 中添加了一个 PR,同时我正在使用我的 fork,它工作正常。

      https://github.com/google/signet/pull/35

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-03-10
        • 1970-01-01
        • 1970-01-01
        • 2020-05-16
        • 1970-01-01
        • 1970-01-01
        • 2020-05-11
        相关资源
        最近更新 更多