【问题标题】:Google OAuth2 Authorizing OAuth token error: redirect_uri_mismatchGoogle OAuth2 授权 OAuth 令牌错误: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 无效。

【问题讨论】:

    标签: oauth-2.0 google-oauth


    【解决方案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:autoauto!)但是对于授权我不知道应该使用完全相同的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 或其他。
                  猜你喜欢
                  • 2012-07-14
                  • 2021-10-14
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2021-06-22
                  相关资源
                  最近更新 更多