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 回答