4

ユーザーのログインに 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 イベントを追加する方法は?

4

3 に答える 3