Google OAuth2 授权 OAuth 令牌错误:redirect_uri_mismatch
Posted
技术标签:
【中文标题】Google OAuth2 授权 OAuth 令牌错误:redirect_uri_mismatch【英文标题】:Google OAuth2 Authorizing OAuth token error: redirect_uri_mismatch 【发布时间】:2013-07-31 00:24:06 【问题描述】:我正在根据此网页创建和授权 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 authorization - Error: redirect_uri_mismatch
但是当我尝试将重定向 url 注册到我的控制台时,我被告知该 url 无效。
【问题讨论】:
【参考方案1】:最简单的方法是创建服务帐号。
使用您自己的帐户创建文档并与服务帐户共享。
【讨论】:
【参考方案2】:我收到此错误,因为我未正确按照已安装应用程序流程此处的步骤进行操作
https://github.com/googleads/googleads-python-lib/wiki
而不是服务器到服务器流。
【讨论】:
【参考方案3】:对于我的原生应用,我尝试了几十种不同的方法。我终于通过使用“redirect_uri=http%3A%2F%2Flocalhost%3A1234”让它工作,其中 1234 是端口号。这在两个请求(授权码和访问令牌)中必须相同。注意百分比编码的使用。
【讨论】:
【参考方案4】:就我而言,我没有创建 Web 应用程序,而是选择了“其他”: OAuth 客户端 ID > 其他
就是这样。
【讨论】:
【参考方案5】:为此浪费了 4 或 5 个小时...使用 'postmessage' 作为参数值,而不是真正的重定向 Uri...
$client->setRedirectUri('postmessage');
【讨论】:
我是 java 人,但是将重定向 uri 更改为 postmessage 对我有用。在这个****上花了两个小时。【参考方案6】:2015July15 - 工作登录开始导致错误 400,Error: redirect_uri_mismatch
i posted a solution 在类似的问题上:将加载脚本更改为
<script src="https://apis.google.com/js/client:platform.js?onload=startApp></script>
【讨论】:
【参考方案7】:请注意,Token 请求的 'redirect_uri' 值需要与 Authorization 请求的 'redirect_uri' 值相同。
【讨论】:
没错,谢谢!我的问题是接收授权码我使用了urn:ietf:wg:oauth:2.0:oob:auto
(auto!)但是对于授权我不知道应该使用完全相同的uri【参考方案8】:
对于我的网络应用程序,我通过写作纠正了我的错误
instead of : http://localhost:11472/authorize/
type : http://localhost/authorize/
【讨论】:
所以我们可以将 localhost 作为 URI,它适用于已发布的网站吗?对于实时/发布的网站,localhost 是如何工作的?我在这里错过了什么吗? 这是唯一对我有用的解决方案。如果您只是在浏览快速入门,那么这就是您需要做的事情!!!!!【参考方案9】:对于仍然被此问题困扰的任何人,在 Google Cloud Console 中注册您的应用时,您必须将“平台”设置为“本机(Windows Mobile、Blackberry、桌面、设备等)”,否则,它不会让你使用 'urn:ietf:wg:oauth:2.0:oob' 作为重定向 URI。
【讨论】:
【参考方案10】:以防万一您使用的是 Google+ javascript 按钮(带有网络应用程序),您必须输入 postmessage
而不是实际的 URI。我几乎花了一整天的时间才弄清楚这一点,因为谷歌文档出于某种原因并不能清楚地支持它。
【讨论】:
这节省了我数小时的挖掘时间,谢谢。那里有太多相互冲突的/遗留文档! 同上 - 我只是浪费了大量时间试图弄清楚这一点! 我是 oauth 的新手。我无法理解你建议的这个“postmessage”。它是如何工作的,而不是一个 url。 “显示对话框后”,这就是“postmessage”所指的内容。这个建议救了我! Google+ 平台登录(离线访问)让我在 Node.js 中疯狂! @Drewid 如何发送 POST 消息而不是 URI?【参考方案11】:当您在 https://code.google.com/apis/console
注册您的应用时,并且
制作客户 ID,您有机会指定一个或多个重定向
URI。您的身份验证 URI 上的 redirect_uri
参数的值必须为
完全匹配其中之一。
【讨论】:
【参考方案12】:redirect_uri (urn:ietf:wg:oauth:2.0:oob) 仅适用于为已安装的应用程序生成的那些 Google 客户端 ID。您可以转到your console 并创建此类型的新客户端ID。
【讨论】:
是的,你是对的。我通过为已安装的应用程序创建客户端 ID 解决了这个问题。 卫生部。使用为 Web 应用程序创建的一个。我想要我生命的最后 4 小时! 我找不到为已安装的应用程序创建 OAuth2 密钥的选项。 @SatyamSingh 你现在可能已经想通了,但他们不再称它为Installed Applications
。您只需选择 ios 或 android 或其他。以上是关于Google OAuth2 授权 OAuth 令牌错误:redirect_uri_mismatch的主要内容,如果未能解决你的问题,请参考以下文章
向 Google 进行身份验证时,从 Spring OAuth2 授权服务器发出 JWT 令牌
Google OAuth 令牌请求返回“invalid_client”:“未授权”