我正在尝试使用javascript sdk进行oauth登录并访问google-plus-api。这里的代码基本相同:https://developers.google.com/api-client-library/javascript/features/authentication
在我的firebug控制台中,这是将api请求发送到的url:https://content.googleapis.com/discovery/v1/apis/plus/v1/rest?fields=servicePath%2Cresources%2Cparameters%2Cmethods&pp=0&key={key}
这是返回的错误:{"error":{"errors":[{"domain":"usageLimits","reason":"keyInvalid","message":"Bad Request"}],"code":400,"message":"坏请求"}}
我有:1.将Google Plus Api添加到我的项目中2.已创建oauth凭据3.设置我的同意屏幕
然而,我仍然会出错。
原因是您在请求中定义了密钥。按照发现API文档中的规定(https://developers.google.com/discovery/v1/getting_started#before_starting):
"API发现服务只提供不需要身份验证。此外,与您向许多其他的谷歌API,你对发现服务的请求API不应包含API密钥。如果您提供了密钥请求将失败。这种行为有助于确保在分发以下工具时意外泄露了您的API密钥基于Google API发现服务。"
因此,您可以通过从请求中完全删除密钥来解决问题。
如果你使用谷歌的javascript客户端来做这件事,并且在加载更多API时发生错误,你必须首先取消设置密钥:
gapi.client.setApiKey( null );
gapi.client.load( "plus", "v1", function( apiresponse ) { ... } );
如果其他功能稍后需要该键,则必须重新设置。
为了避免不断地设置和取消设置密钥,我在身份验证之前加载所有需要的API,然后设置API密钥,这样就不再有问题了。