私は 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 オブジェクトをロードできる方法と、できればパブリックおよびプライベートの関数/変数を定義できる方法を探しています。