错误: 无效客户端,未注册的来源

46

我已经按照这些说明在我的Web服务器上安装了Google Drive实时API示例文件,包括在Cloud Console中生成client_id并将其插入到index.html文件中。

当我访问该页面并单击授权应用程序的按钮时,会弹出一个新窗口并显示:

错误:invalid_client
没有注册的源

请求详细信息如下:

openid_connect_request=true
cookie_policy_enforce=false
scope=https://www.googleapis.com/auth/drive.install https://www.googleapis.com/auth/drive.file https://www.googleapis.com/auth/plus.me
response_type=token
access_type=online
redirect_uri=postmessage
proxy=oauth2relay865404532
origin=http://mywebsite.com
state=264939258|0.165356673
display=page
client_id=1077585001321.apps.googleusercontent.com
authuser=0

我在云控制台中没有看到应该使用的其他client_id。 有谁知道如何解决这个错误吗? 感谢您的帮助。

2个回答

60
在新的 Google API 控制台中,从以下位置配置您的 OAuth2.0 授权来源:
Your Project > APIs & auth > Credentials

你可能需要为网页应用程序添加一个新的客户端 ID(我需要这样做,因为默认的是针对 AppEngine 的)

Create Client ID > Web Application > Authorized Javascript origins

如果您正在本地的开发服务器上运行,请添加完整的URL,例如:

http://127.0.0.1:9000

1
我想了解“如何输入授权JavaScript来源的本地主机URL”。因为我正在使用本地主机进行工作,输入本地主机URL为“http:127.0.0.1/myProjectName”后,它会抛出“Origin URIs must not contain a path: http://127.0.0.1/myProjectName/”错误。 - Nagama Inamdar
2
你只需要说“http://localhost:13091”(无论你的本地主机是什么)而不提及你的项目名称 - 这对我很有用!感谢这个答案! - sim1
如果有帮助的话 - 我在遵循上述指示时遇到了麻烦。对我来说问题是,在OAuth凭据配置中,“已授权的JavaScript来源”字段未设置。我将其设置为与确切的dev URL匹配: "http://127.0.0.1:8080"我想当你部署到真正的Web服务器时,你需要使用适当的URL创建一个新的客户端ID。 - Sean
似乎谷歌需要一些时间来应用这些设置 - 至少在添加额外来源时 - 在最终接受之前,它会在5-10分钟内给出无效来源错误。 - Dmitry Yudakov

14

更新:我已将接受的答案更改为Johno Scott,因为他提到了较新版本的控制台,而我的答案仅适用于旧版本。


我解决了它。我需要在OAuth 2.0客户端ID屏幕上输入WEB ORIGIN。具体来说,它必须是index.html文件的确切路径/ URL,否则它会默认为根域,这样不起作用。

此截图向您展示了需要输入的确切位置:

输入图像描述


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接