2013-07-30 159 views
19

我根据这个网页创建和授权的OAuth令牌:https://code.google.com/p/google-mail-oauth2-tools/wiki/OAuth2DotPyRunThrough谷歌的OAuth2中授权的OAuth令牌错误:redirect_uri_mismatch

但我得到这个错误: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 authorization - Error: redirect_uri_mismatch

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

回答

45

的REDIRECT_URI(URN:IETF:WG:OAuth的:2.0:OOB)只适用于已为安装的应用程序产生的那些谷歌的客户端ID。您可以转至your console并创建一个此类型的新客户端ID。

+0

是的,你是对的。我通过为**安装的应用程序**创建客户端ID来解决此问题。 – Cacheing

+4

DOH。使用为Web应用程序创建的一个。我想要回到我生命中的最后4个小时! –

+4

创建OAuth客户端ID>其他....完成作业。谢谢@oravecz –

7

当您在https://code.google.com/apis/console和 上注册您的应用程序时,您将有机会指定一个或多个重定向 URI。验证URI的redirect_uri参数的值必须与 完全匹配。

+0

是否有可能编辑当前包ID? – Geek

29

以防万一,如果您使用Google+ javascript按钮(与网络应用程序),你必须把postmessage而不是实际的URI。我花了几乎整整一天的时间才弄清楚这一点,因为Google文档由于某种原因并未明确表达。

+1

这节省了我数小时的时间,我感谢你。那里有太多冲突/遗留的文档! – Drewid

+0

同上 - 我只是浪费时间试图找出这个问题的GOBS! – Rob

+1

我是oauth的新手。我无法理解你建议的这个“postmessage”。它是如何工作的,而不是一个网址。 –

3

对于任何仍然难以解决此问题的人,在Google云端控制台中注册您的应用时,您必须将“平台”设置为“本机(Windows Mobile,Blackberry,桌面设备等)”,否则,它不会让你使用'urn:ietf:wg:oauth:2.0:oob'作为重定向URI。

5

对于我的web应用程序我纠正了我的错误写

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

这解决了我的问题。 – msbarnard

+0

因此,我们可以将localhost作为URI,它可以用于发布的网站?对于直播/发布的网站,本地主机是如何工作的?我在这里错过了什么吗? – Unbreakable

+0

这是实际为我工作的唯一解决方案。如果你只是在快速启动,那么这就是你需要做的!!!!! – zypherman

7

请注意,该令牌请求的“REDIRECT_URI的价值必须一样的“REDIRECT_URI”授权请求的值。

+0

确切的,谢谢!我的问题是,要获得我使用'urn:ietf:wg:oauth:2.0:oob:auto'(* auto *!)的授权码,但对于授权,我不知道应该使用完全相同的uri –

1

2015July15 - 工作开始登入造成错误400 Error: redirect_uri_mismatch

i posted a solution上的相似,所以问题:变更后的装载脚本

<script src="https://apis.google.com/js/client:platform.js?onload=startApp></script> 
3

丢失4或5个小时,这...使用 'PostMessage的'作为参数值,而不是真正的重定向URI ...

$client->setRedirectUri('postmessage'); 
2

在我的情况,而不是创建Web应用程序,我只是选择了其他的: OAuth客户端ID>其他

这就是它。