我正在使用 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'));
现在的问题是 - 我得到错误
类型错误:gapi.auth 未定义
应该定义吧?我看着控制台,输入gapi.auth
了一个对象作为响应。
因此,我相信该js.onload
事件会提前触发,即何时gapi.auth
尚未准备好。
如何解决这个问题?或者更具体地说,如何为 gapi 添加 onload 事件?