我正在尝试通过谷歌+在我们的移动应用程序中设置登录。
所以我们有一个Android客户端,可以获取oauth google api的验证码。
然后将verify_code发送回rails,rails负责获取访问令牌/刷新令牌对,然后与api通话。
我遇到验证verify_code的问题。
起初会返回
{
"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!
任何帮助将不胜感激!
答案 0 :(得分:0)
您发送的重定向URI需要与您在google apis console中设置的URI相匹配。
API& auth - >凭证
答案 1 :(得分:0)
好吧,实际上它有点隐藏,但我找到了它。
因此,您需要将重定向uri设置为凭据中设置的“带外”uri。
urn:ietf:wg:oauth:2.0:oob
客户端实际上并未将其设置为该值,但我认为谷歌默认将其设置为该值。
当前的signet gem不允许将redirect_uri设置为该值,所以我在主repo中添加了一个PR,同时我正在使用我的fork,它工作正常。