Google Javascript API(gapi) - .load的问题

Alo*_*lon 5 javascript oauth-2.0 google-plus

我正在尝试使用Google plus API(通过googie-api-javascript)实现(省略完整代码):

var clientId = '7454475891XxxxxxXom4c6n.apps.googleusercontent.com'; //fake client
var apiKey = '-uTH_p6NokbrXXXXXXXXXXXXX'; //Fake Key
var scopes = 'https://www.googleapis.com/auth/plus.me';

function handleClientLoad() {
   gapi.client.setApiKey(apiKey);
   window.setTimeout(checkAuth,1);
}

function checkAuth() {
   gapi.auth.authorize({client_id: clientId, scope: scopes, immediate: true}, handleAuthResult);
}


function handleAuthResult(authResult) {        
  if (authResult && !authResult.error) {          
    makeApiCall();
  } else {
    //handle user-approval
  }
}

  // Load the API and make an API call.  Display the results on the screen.
function makeApiCall() {
    gapi.client.load('plus', 'v1', function() {
      var o = gapi.client.plus;
      alert(o);
    });
}
Run Code Online (Sandbox Code Playgroud)

代码很好地工作到gapi.client.load(包括允许访问的用户) - 这个回调被调用但alert(o)将返回undefined.

检查HTTP请求后,我看到.load发出请求:

https://content.googleapis.com/discovery/v1/apis/plus/v1/rpc?fields=methods%2F*%2Fid&pp=0&key=-uTH_p6NokbrXXXXXXXX
Run Code Online (Sandbox Code Playgroud)

这将返回HTTP 400,并显示以下消息:

{"error":{"errors":[{"domain":"usageLimits","reason":"keyInvalid","message":"Bad Request"}],"code":400,"message":"Bad Request"}}
Run Code Online (Sandbox Code Playgroud)

我的问题是 - 为了使这项工作,我需要做些什么改变?我需要启用一些秘密设置吗?Google+在API列表下的google-developer-console中启用.

感谢你的帮助,Alon

Alo*_*lon 11

问题:.load向Google发现服务发出请求以加载.JS.如果收到的请求包含api-key,则该服务将出错.(我不知道为什么库这样工作,看起来像个bug?)

固定:

gapi.client.setApiKey(""); //NEW
gapi.client.load('plus', 'v1', function()
//re-add the key later if you need it
Run Code Online (Sandbox Code Playgroud)

从发现服务文档:您对发现服务API发出的请求不应包含API密钥.如果您确实提供了密钥,则请求将失败.

很奇怪......:P