1

我正在尝试在我们的移动应用程序中通过 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!

任何帮助,将不胜感激!

4

2 回答 2

0

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

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

urn:ietf:wg:oauth:2.0:oob

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

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

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

于 2014-02-22T03:09:12.963 回答
0

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

APIs & auth -> 凭证

于 2014-02-21T13:56:19.730 回答