我正在使用Google API(gapi)进行用户登录。
以下是我的代码。它异步加载Google SDK。一旦加载完成,我需要调用API函数gapi.auth.authorize
(function(d: any, s: string, id: string) {
var js: HTMLScriptElement, gjs: Element = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) return;
js = d.createElement(s); js.id = id;
js.src = "https://apis.google.com/js/client.js";
gjs.parentNode.insertBefore(js, gjs);
if (js.readyState){ //IE
js.onreadystatechange = function(){
if (js.readyState == "loaded" ||
js.readyState == "complete"){
js.onreadystatechange = null;
gapi.auth.authorize(); //<-- details omitted
}
};
} else { //Others
js.onload = function(){
gapi.auth.authorize(); //<-- details omitted
};
}
}(document, 'script', 'google-jssdk'));
现在的问题是 - 我遇到了错误
TypeError:gapi.auth未定义
应该是已经定义好了,我查看了控制台并输入了gapi.auth,然后我得到了一个对象。
因此,我相信js.onload事件会过早地触发,即在gapi.auth还没有准备好的情况下。
如何解决?或者更具体地说,如何为gapi添加onload事件?
gapi.auth
时,它仍然是“未定义”的,而当我键入gapi
时,我得到一个带有许多属性(如client
,plus
等)但没有auth
的对象。这是否与从开发人员控制台启用的API有关?我只启用了Google+ API。 - Nick Sotiros