【问题标题】:Got origin_mismatch error in Google+ share api在 Google+ 分享 API 中出现 origin_mismatch 错误
【发布时间】:2013-05-31 05:29:50
【问题描述】:

我想在 google+ 上分享一些动态内容。为此我检查了它https://developers.google.com/+/web/share/interactive#rendering_the_button_with_javascript

<head>
<script type="text/javascript">
  (function() {
   var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;
   po.src = 'https://apis.google.com/js/client:plusone.js';
   var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
 })();
</script>
</head>
<body>
<button
  class="g-interactivepost"
  data-contenturl="http://www.pubandbar-network.co.uk/" 
  data-clientid="102180630313.apps.googleusercontent.com"
  data-cookiepolicy="single_host_origin">  Share 
</button>
</body>

但是执行的时候出现这个错误

Error: origin_mismatch
Request Details

    scope=https://www.googleapis.com/auth/plus.login
    response_type=code token id_token gsession
    access_type=online
    redirect_uri=postmessage
    cookie_policy=single_host_origin
    proxy=oauth2relay554026710
    origin=http://www.pubandbar-network.co.uk
    state=1995523240|0.4607792083184853
    display=page
    client_id=102180630313.apps.googleusercontent.com
    authuser=0

请建议如何解决此问题

【问题讨论】:

    标签: api google-plus share mismatch


    【解决方案1】:

    来源不匹配通常是由于在 API project console 中未正确设置 Javascript 来源。您需要确保 Javascript 来源与您的请求来自的域以及您在登录后将用户返回到的域相匹配。

    更多细节可以在"Create a client ID and client secret" section的开发者文档中找到。

    注意:这里的一个常见错误是为 http:// 添加 javascript 来源,但不为 https:// 添加(反之亦然)。如果您想允许用户从两者访问您的网站,那么您需要在 javascript 控制台中列出两者。

    注意(感谢 Bethel Goka):如果用户访问您的网站时 url 中出现端口号,您必须在 javascript 源中包含服务器的端口号。

    【讨论】:

    • 到目前为止,谷歌文档还没有更新,当我从原始 URL 中删除 www 时,只有它起作用了,http://example.com,“注册的应用程序”仍然没有像另一个选项可以在“凭据”中找到
    • 另外一点,我们遇到了这个问题,却没有意识到它对“localhost”和“localhost”的处理方式不同,所以添加 localhost SSL 让我们感到困惑。
    • 就我而言,我有*.domain.com/*,这是他们给出的占位符示例。它在两个测试环境(子域)中都可以正常工作,但在生产环境中却不行(使用app 子域)。我不知道为什么。
    【解决方案2】:

    删除“www”对我有用。从谷歌控制台。我只是使用了http://example.com,它起作用了......

    【讨论】:

    • 这意味着您的本地主机服务器没有使用“www”子域。
    【解决方案3】:

    对于 VS 用户:
    打开项目的属性并获取项目 URL:


    这是你的 Javascript 起源

    同时更改重定向 URI。应该是你的起源+“/oauth2callback”
    对我来说:

    【讨论】:

      【解决方案4】:

      (错误有你的答案)

      需要在 google 控制台 api As 中设置 javascript 来源

      origin=**http://www.pubandbar-network.co.uk**
      
      scope=https://www.googleapis.com/auth/plus.login
      response_type=code token id_token gsession
      access_type=online
      redirect_uri=postmessage
      cookie_policy=single_host_origin
      proxy=oauth2relay554026710
      *origin=http://www.pubandbar-network.co.uk*
      state=1995523240|0.4607792083184853
      display=page
      client_id=102180630313.apps.googleusercontent.com
      authuser=0
      

      【讨论】:

        【解决方案5】:

        我的默认 javascript 来源是 https://www , 我的网站不支持 https:// , 我包括 http://www. http:// https://www.https:// , 它有效。

        【讨论】:

          【解决方案6】:

          如果您的客户端 ID、客户端密码和您的 javascript 来源 url 正确,您可能需要检查您使用的端口是否与您为 javascript 来源输入的 url 完全相同。我输错了一个数字:e, g localhost:888 而不是 localhost:8888 并得到了那个错误,因为我的 javascript 起源是 localhost:8888 而不是 888

          【讨论】:

            【解决方案7】:

            对 Lee 的回答稍作补充:在 JavaScript 来源中列出您的 URL 的 www.whatever.extwhatever.ext 形式可能会消除错误.这就是我的应用的诀窍。

            【讨论】:

            • 非常感谢。今天早上我花了一个小时试图让它工作。我分别尝试了 www.example.com 和 example.com 。我想知道为什么将它们结合起来会起作用。
            【解决方案8】:

            我做了一件愚蠢的事,花了几分钟才解决,所以我想我会发出警告,以防其他人落入这个陷阱。

            在控制台中,当显示来源时,“重定向 URI”位于“Javascript 来源”上方。当您打开编辑窗格时,情况正好相反,因此如果您不注意,可以将您的来源粘贴到 Redirect URIs 字段中并 ....

            【讨论】:

            • 这更像是一个评论而不是一个答案。你应该把它放在@lee's answer IMO
            【解决方案9】:

            1:打开项目的凭据页面。

            2:在客户端 ID 列表中双击您的 OAuth 2.0 Web 客户端。

            3:当您在本地运行服务器时,确保在 Web 客户端 ID 表单中,将 Authorized JavaScript origins 字段更改为 http://localhost:8080。 远程运行时添加对应的appspot server url。

            【讨论】:

              【解决方案10】:

              导致此错误的最常见疏忽是忘记在应用凭据仪表板的同意设置中添加 HTTP 和 HTTPS 来源。

              要修复,请转到https://console.cloud.google.com/apis/credentials?project=YOUR-APP-ID

              如果您已经创建了 OAuth 2.0 客户端 ID,请选择。如果没有,则必须为您的源创建一个新的客户端 ID。

              Authorised JavaScript origins 下,为您的应用添加 https 和 http 来源(如果没有同时添加)。

              【讨论】:

                【解决方案11】:

                从您的浏览器中退出所有谷歌服务。

                【讨论】:

                • 这实际上对我有用。我已经在 Chrome 上登录了谷歌。所以我试了一下FF,效果很好。
                【解决方案12】:

                我同样遇到了 google + api 登录的问题。我得到 Error:origin_mismatch 并且与问题中的细节相同.. 我的 javascript 凭据有 @987654321 @ 但是当我运行 python 文件时,它以 0.0.0.0:4567 打开链接,这基本上是一个本地主机,但是当我将浏览器中的 url 更改为 http://localhost:4567 现在出现错误被删除了..我的应用程序能够获得 OAuth 框..一切顺利!!!这件事消除了我的错误... 请告诉我我是否正确,因为我刚刚开始学习如何使用 apis

                【讨论】:

                  【解决方案13】:

                  请检查您在 google 控制台中为您的 WEB 应用程序/Android 设置的源 url

                  并检查 http 或 https,因为您的网站在 https(一般网站)上不起作用。

                  【讨论】:

                    【解决方案14】:

                    您必须在此处阅读开发者指南

                    https://developers.google.com/analytics/devguides/reporting/embed/v1/devguide
                    

                    祝你好运!

                    【讨论】:

                      【解决方案15】:

                      我在尝试使用“Google Play 游戏服务管理演示”时遇到此错误,这是因为 URL 中缺少“www”

                      【讨论】:

                        【解决方案16】:

                        我通过更改 JavaScript 来源并将 Google 控制台中的 URI 从 http://0.0.0.0:4567 重定向到 http://localhost:4567 来修复它,记得在重定向 URI 后添加 /oauth2callback 并将浏览器上的 url 更改为 http://localhost:4567

                        【讨论】:

                          猜你喜欢
                          • 2013-10-17
                          • 1970-01-01
                          • 2014-11-30
                          • 1970-01-01
                          • 2013-08-30
                          • 1970-01-01
                          • 2016-03-14
                          • 1970-01-01
                          • 2020-10-03
                          相关资源
                          最近更新 更多