Google+分享API中出现origin_mismatch错误

时间:2013-05-31 05:29:50

标签: api google-plus share mismatch

我想在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

请建议如何解决此问题

16 个答案:

答案 0 :(得分:46)

原因不匹配通常是由于API project console中未正确设置Javascript来源引起的。您需要确保Javascript来源与您的请求来自的域匹配,并在登录后返回给用户。

更多详细信息,请参阅"Create a client ID and client secret" section

中的开发人员文档

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

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

答案 1 :(得分:8)

通过删除&#34; www。&#34;它对我有用。来自谷歌控制台。我只是使用http://example.com而且它有用......

答案 2 :(得分:5)

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

enter image description here
这是您的Javascript起源

还要更改重定向URI。它应该是你的起源+&#34; / oauth2callback&#34;
对我来说:

enter image description here

答案 3 :(得分:4)

(错误有答案)

需要在google console api中设置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

答案 4 :(得分:3)

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

答案 5 :(得分:2)

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

答案 6 :(得分:2)

对Lee的回答只是一点点补充:在JavaScript源代码中列出 www.whatever.ext whatever.ext 形式的URL可能会消除错误。这就是我的应用程序的诀窍。

答案 7 :(得分:2)

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

在控制台中,当显示原点时,“重定向URI”位于“Javascript origin”之上。当你打开编辑窗格时,它是相反的,所以如果你没有注意,你可以将你的起源粘贴在Redirect URIs字段中......

答案 8 :(得分:2)

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

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

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

答案 9 :(得分:2)

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

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

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

授权的JavaScript来源下,如果未添加两者,请为您的应用添加https和http来源。

答案 10 :(得分:1)

从您的浏览器退出所有Google服务。

答案 11 :(得分:1)

我同样遇到了google + api登录的问题。我收到了错误:origin_mismatch ,并且问题中存在相同的详细信息..我的javascript凭据有 {{ 3}} 但是当我运行python文件时,它打开链接为 0.0.0.0:4567 ,这基本上是一个本地主机,但是当我将浏览器中的URL更改为 http://localhost:4567 时错误已被删除..我的应用程序能够获得OAuth框..一切都很顺利!这件事删除了我的错误... 请让我知道我是否正确,因为我刚开始学习如何使用apis

答案 12 :(得分:0)

请检查google console中为您设置WEB应用程序/ Android

的原始网址

并检查http或https,因为您的网站无法在https上工作(在一般网站中)。

答案 13 :(得分:0)

您必须阅读此处的开发人员指南

https://developers.google.com/analytics/devguides/reporting/embed/v1/devguide
祝你好运!

答案 14 :(得分:0)

我在尝试使用&#34; Google Play游戏服务管理演示&#34;时遇到此错误这是因为失踪&#34; www&#34;在网址

答案 15 :(得分:0)

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