Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/authentication/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Authentication Google OAuth 2授权-错误:重定向\u uri\u不匹配_Authentication_Oauth 2.0_Google Signin - Fatal编程技术网

Authentication Google OAuth 2授权-错误:重定向\u uri\u不匹配

Authentication Google OAuth 2授权-错误:重定向\u uri\u不匹配,authentication,oauth-2.0,google-signin,Authentication,Oauth 2.0,Google Signin,在我已注册应用程序的网站上,将生成的客户端ID:和客户端机密设置到我的应用程序,并尝试登录谷歌。 不幸的是,我收到了错误消息: Error: redirect_uri_mismatch The redirect URI in the request: http://127.0.0.1:3000/auth/google_oauth2/callback did not match a registered redirect URI scope=https://www.googleapis.com/

在我已注册应用程序的网站上,将生成的客户端ID:客户端机密设置到我的应用程序,并尝试登录谷歌。 不幸的是,我收到了错误消息:

Error: redirect_uri_mismatch
The redirect URI in the request: http://127.0.0.1:3000/auth/google_oauth2/callback did not match a registered redirect URI

scope=https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email
response_type=code
redirect_uri=http://127.0.0.1:3000/auth/google_oauth2/callback
access_type=offline
approval_prompt=force
client_id=generated_id
此消息的含义是什么?我如何修复它? 我使用gemomniauth-google-oauth2

重定向URI(返回响应的位置)必须在API控制台中注册,错误表明您没有这样做,或者没有正确地这样做

转到项目的控制台并查看API访问。您应该在那里看到您的
客户端ID
客户端机密
,以及重定向URI列表。如果未列出所需的URI,请单击编辑设置并将该URI添加到列表中


编辑:(来自下面一条评价很高的评论)请注意,更新GoogleAPI控制台和出现的更改可能需要一些时间。通常只有几分钟,但有时似乎更长。

当您在和注册应用程序时 创建一个客户端ID,您就有机会指定一个或多个重定向 URI。身份验证uri上的
重定向\u uri
参数的值必须为
精确匹配其中一个。

如果使用的是Google+javascript按钮,则必须使用
postmessage
,而不是实际的URI。我花了几乎一整天的时间才弄明白这一点,因为谷歌的文档由于某种原因没有清楚地说明这一点。

试着做以下检查:

  • 控制台和应用程序中的绑定ID。我更喜欢像这样设置应用程序的Bundle ID“org.peredovik.${PRODUCT_NAME:rfc1034identifier}”
  • 检查是否在选项卡信息中添加了URL类型只需在标识符和URL方案中键入绑定ID,角色设置为编辑器
  • 在cloud.google.com的控制台“API&auth”->“同意屏幕”中填写有关您的应用程序的表格。“产品名称”是必填字段

  • 享受:)

    确保检查协议“http://”或“https://”,因为谷歌也会检查协议。
    最好在列表中添加这两个URL。

    让我完成@Bazyl的回答:在我收到的消息中,他们提到了URI
    ”http://localhost:8080/“
    (当然,这似乎是谷歌内部的配置)。我更改了那个的授权URI,
    ”http://localhost:8080/“
    ,消息不再出现。。。视频被上传了。。。API文档非常蹩脚。。。每次我使用google API时,我都会感到“幸运”,但缺少关于它的良好文档(是的,我让它工作了,但我还不明白它为什么失败,也不明白它为什么工作……在web上只有一个地方可以确认URI,它被复制到了client_secrets.json中……我不知道是否还有第三个地方可以写相同的URI……我不仅找到了文档,还找到了谷歌ap的GUI设计我很蹩脚…

    对于我的web应用程序,我通过编写

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

    在我的例子中,我必须检查web应用程序/已安装应用程序的客户端ID类型

    已安装的应用程序:[重定向URI] 在这种情况下,localhost只起作用


    web应用程序:您需要有效的域名[Redirect URI:://p>这似乎很奇怪,也很烦人,因为没有“一个”解决方案。
    对我来说,没有成功,但成功了。

    你需要做的是回到开发人员控制台,进入API&Auth>同意屏幕并填写。具体来说,就是产品名称。

    2015年7月15日-上周登录时使用此脚本的登录名

    <script src="https://apis.google.com/js/platform.js" async defer></script>
    

    任何试图在新控制台中找到重定向URL设置位置的人:API&Auth->Credentials->OAuth 2.0客户端ID->单击链接查找所有重定向URL

    在我的例子中,它是
    www
    非www
    URL。实际站点在Google Devel中有
    www
    URL和授权重定向URIoper控制台有
    非www
    URL。因此,重定向URI不匹配。我通过将Google开发者控制台中的
    授权重定向URI
    更新为
    www
    URL解决了这个问题

    其他常见的URI不匹配包括:

    • 在授权重定向URI中使用
      http://
      https://
      作为实际URL,反之亦然
    • 使用尾部斜杠(
      http://example.com/
      )在授权重定向URI中,并且不使用尾部斜杠(
      http://example.com
      )作为实际URL,反之亦然
    下面是Google开发者控制台的一步一步的屏幕截图,这样对于那些很难找到开发者控制台页面来更新重定向URI的人来说会很有帮助

  • 选择您的项目

  • 单击菜单图标
  • 单击
    API管理器
    菜单
  • 单击
    Credentials
    菜单。在
    OAuth 2.0客户端ID
    下,您将找到您的客户端名称。在我的例子中,它是
    Web客户端1
    。单击它,将出现一个弹出窗口,您可以编辑授权的Javascript源代码授权的重定向URI
  • 下面是一篇关于清单的谷歌文章:

    • http
      https
    • &
    • 尾随斜杠(
      /
      )还是打开
    • (CMD/CTRL)+F
      ,在凭证页面中搜索精确匹配项。如果 未找到,然后搜索丢失的一个
    • 等待谷歌刷新它。如果你需要,可能每半小时就会发生一次 它们经常变化,或者它可能会留在游泳池中。对我来说,这几乎需要半个小时才能生效
      • Rails用户(来自文档):

        修复Rails中重定向uri的协议不匹配 只需基于Rai在OmniAuth中设置完整的_主机
        <script src="https://apis.google.com/js/client:platform.js?onload=startApp"></script>
        
        confg = &oauth2.Config{
                RedirectURL:  "postmessage",
                ClientID:   ...,
                ClientSecret: ...,
                Scopes:      ...,
                Endpoint:     google.Endpoint,
        }