我正在尝试使用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= {键}
这是错误: {“error”:{“errors”:[{“domain”:“usageLimits”,“reason”:“keyInvalid”,“message”:“Bad Request”}],“code”:400,“message”:“错误请求“}}
我有: 1.在我的项目中添加了Google Plus Api 2.创建了oauth凭证 3.设置我的同意屏幕
但是,我仍然收到错误。
答案 0 :(得分:2)
原因是您在请求中定义了密钥。正如发现API文档(https://developers.google.com/discovery/v1/getting_started#before_starting)中所指定的那样:
“API Discovery Service仅提供不公开的方法 要求认证。此外,与您提出的要求不同 许多其他Google API,您对Discovery服务的请求 API不应包含API密钥。如果你确实提供了钥匙,那么 请求将失败。此行为有助于确保您不这样做 在分发工具时,会意外地泄露您的API密钥 基于Google API发现服务。“
因此,您可以完全从请求中删除密钥来解决问题。
如果您使用Google的javascript客户端执行此操作,并且在加载更多API时发生错误,则必须先取消设置密钥:
gapi.client.setApiKey( null );
gapi.client.load( "plus", "v1", function( apiresponse ) { ... } );
如果其他功能稍后需要该键,则必须再次设置。
为避免不断设置和取消设置密钥,我会在验证之前加载所有需要的API,然后设置API密钥,从而不再有问题。