1

私は Google API を使っていくつかの作業を行っており、再利用できるようにコードを構造化したいのですが、問題が発生しています。oauth2 を使用して認証するには、このスクリプトを読み込んでいます

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

ロードされたときに initAuth() を呼び出しました。その後、gapi.auth を使用して認証を行うことができます。ただし、さまざまな API を呼び出しているため、認証用のより一般的なラッパー クラスを作成したいと考えています。私はウェブを見回して、非常にきれいに見える自己実行型の匿名関数を試してみました。

(function(GAuth, $, undefined) {

    GAuth.token = gapi.auth.getToken();

    GAuth.authenticate = function(clientId, scopes, apiUrl, isInitialAuth, callback) {
        if(isInitialAuth)
        {
            gapi.auth.init(function() {
                authorize(clientId, scopes, apiUrl, false, callback);
            });
        }

        else
        {
            // authorize is private
            authorize(clientId, scopes, apiUrl, true, callback);
        }
    }

    ...etc...

}(window.GAuth = window.GAuth || {}, jQuery));

これの問題は、すぐに実行されることです。この場合、「gapi is undefined」エラーが発生します。他のスクリプトがロードされた後に GAuth オブジェクトをロードできる方法と、できればパブリックおよびプライベートの関数/変数を定義できる方法を探しています。

4

1 に答える 1

1

gapiこのファイルを必要とする前にセットアップするファイルを含めます。gapiこれにより、このスクリプトが実行されるまでに値が確保されます。jQuery を使用しているため、準備完了のドキュメントを使用することもできます (最初に準備ができているページに依存するコードには非常に推奨されます)。

// Define functions here
$(function() {
    // Do your code dependent on a completely loaded DOM here
});
于 2013-04-04T04:16:36.327 に答える