我正在使用 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 对象,并且最好允许我定义公共和私有函数/变量。