为什么来自Google Plus Api的'gapi.client'未定义?

时间:2012-10-13 15:24:12

标签: jquery google-api

我正在尝试使用google + api,我不得不修改示例身份验证示例以满足我的需求:

<script src="https://apis.google.com/js/client.js"></script>

而不是:

<script src="https://apis.google.com/js/client.js?onload=handleClientLoad"></script>

基本上删除了onload参数,并将所有功能放在dom上。

这是我不明白的问题:

代码:

console.log(gapi);
console.log(gapi.client);

$.each(gapi, function(){

        console.log(this);

});

gapi.client.setApiKey(this.options.apiKey);

输出:

enter image description here

所以,我的问题主要是:

为什么在console.log(gapi)它显示它有像client和auth这样的子对象,而在console.log(gapi.client)它表示未定义?

1 个答案:

答案 0 :(得分:11)

必须使用?onload callback参数,当JS Client异步加载完成时调用它。通过在dom上运行,你可以在定义之前尝试访问gapi.client。发生的事情是/js/client.js脚本定义了gapi和一些辅助函数,但是直到JS客户端加载完成后才定义gapi.client和gapi.auth。当您检查console.log(gapi)记录的对象时,客户端已完成加载,因此您可以看到gapi.client和gapi.auth已定义。