谷歌OAuth2授权OAuth令牌错误:重定向URI不匹配。

24

我正在按照这个网页创建和授权OAuth令牌:https://code.google.com/p/google-mail-oauth2-tools/wiki/OAuth2DotPyRunThrough

但是我遇到了这个错误:redirect_uri_mismatch。

The redirect URI in the request: urn:ietf:wg:oauth:2.0:oob did not match a registered redirect URI
from_login=1
cookie_policy_enforce=false
scope=https://mail.google.com/
response_type=code
access_type=online
redirect_uri=urn:ietf:wg:oauth:2.0:oob
as=-80019291b2cb8ed
display=page
pli=1
client_id=......
authuser=0
hl=en

我认为这可能会有所帮助:Google OAuth 2授权 - 错误:redirect_uri_mismatch

但是当我试图将重定向URL注册到我的控制台时,我被告知该URL无效。

13个回答

50

redirect_uri(urn:ietf:wg:oauth:2.0:oob)仅适用于为安装的应用程序生成的Google客户端ID。您可以转到控制台并创建此类型的新客户端ID。


是的,你说得对。我通过为“已安装应用程序”创建客户端ID来解决了这个问题。 - Cacheing
6
使用为网络应用程序创建的 DOH。我想要回到过去的四个小时! - Mike Devenney
3
我找不到创建安装应用程序的OAuth2密钥选项。 - Satyam Singh
@SatyamSingh 你可能已经明白了,但是他们不再称之为“已安装的应用程序”了。你只需选择iOS、Android或其他即可。 - Wills Manley

32

如果你正在使用Google+ javascript按钮(与网页应用程序一起使用),请使用postmessage而不是实际的URI。因为谷歌文档出于某些原因没有清楚地说明这一点,所以我花了将近一整天的时间才搞清楚它。


1
这节省了我数小时的查找,非常感谢您。有太多相互矛盾/遗留的文档! - Drewid
同感 - 我刚刚浪费了大量时间来尝试弄清楚这个问题! - Rob
1
我对OAuth还不熟悉。我不理解你建议的“postmessage”。它是如何工作的,而不是使用URL? - Sagi_Avinash_Varma
“after the dialog is shown”是指“postmessage”所涉及的内容。这个建议真的帮了我大忙!在Node.js中,Google+平台登录(具有离线访问权限)让我抓狂! - Jmlevick
@Drewid 我如何发送一个 POST 消息而不是 URI? - Honinbo Shusaku

10

我为我的网络应用程序纠正了错误,方法是编写:

instead of : http://localhost:11472/authorize/
type :      http://localhost/authorize/

那么我们可以将localhost作为URI,它对于已发布的网站也能正常工作吗?对于实时/已发布的网站,为什么localhost也能工作呢?我有什么遗漏吗? - Unbreakable
这是唯一一个对我实际起作用的解决方案。如果你只是在尝试快速入门,那么这就是你需要做的事情!!! - zypherman

7
当你在 https://code.google.com/apis/console 注册你的应用并创建一个客户端 ID 后,你有机会指定一个或多个重定向 URI。在认证 URI 上,redirect_uri 参数的值必须与它们之一完全匹配。

7
请注意,Token请求的'redirect_uri'值需要与Authorization请求的'redirect_uri'值相同。

准确地说,谢谢!我的问题在于,为了接收授权码,我使用了 urn:ietf:wg:oauth:2.0:oob:autoauto!),但是对于授权,我不知道应该使用完全相同的 URI。 - Andriy Tylychko

5

我因为这个问题浪费了4到5个小时...使用 'postmessage' 作为参数值,而不是真正的重定向Uri...

$client->setRedirectUri('postmessage');

我是Java程序员,但将重定向URI更改为PostMessage对我有用。我在这上面花了两个小时的时间。 - OGM2

3
在我的情况下,我选择了“其他”选项而不是创建Web应用程序: OAuth客户端ID>其他
就这样。

3

如果你仍然困惑于这个问题,你必须将在Google Cloud Console注册应用程序时的“平台”设置为“本地 (Windows Mobile、黑莓、桌面、设备等)”,否则,它将不允许你使用“urn:ietf:wg:oauth:2.0:oob”作为重定向URI。


1

0

最简单的方法是创建服务帐户。

使用您自己的帐户创建文档并与服务帐户共享。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接