【发布时间】:2013-09-08 09:28:22
【问题描述】:
我在 JSP 应用程序中使用 Google Oauth2 Javascript。
<script src="https://apis.google.com/js/client.js"></script>
function googleOAuth(idx) {
alert ("Please ensure that popup windows are enabled in your browser. You will authenticate directly with Google in another window.");
var config = {
'client_id': '<%=googleClientId%>',
'scope': 'https://mail.google.com/ https://www.googleapis.com/auth/userinfo.email',
'response_type': 'token',
'immediate': false
};
gapi.auth.authorize(config, function() {
var token = gapi.auth.getToken();
/// ...use token
});
}
我的应用程序直到昨天都运行良好,今天它未能授权 Chrome 控制台说:
Uncaught TypeError: undefined is not a function 在行 cb=gapi.loaded_0:223 处理函数尚未执行。 第 223 行有以下内容:
var f=c.popup,g=c.after_redirect;f&&"keep_open"!=g&&(0,_.Uu)(window,f)
我看不到 g&&(0,_.Uu)(window,f) 可以是有效的 JS。
其他人也看到了吗?
【问题讨论】:
-
我也遇到了这个问题,并认为我自己做了一个糟糕的改变,但事实证明我并不孤单。但是,我应该指出,
g&&(0,_.Uu)(window,f)是有效的 JavaScript。它使用逗号运算符,它返回第二个操作数的值。为了让它在这里有意义,_.Uu的值应该是一个函数,因为它在计算表达式后立即被调用。为了查看g&&(0,_.Uu)(window,f)确实有效,请在第一次执行var g=true,_={Uu:alert},f=null后尝试在控制台中运行它。 -
我明白了;你是对的(虽然我怀疑预期的用法是 g && g(0, _.Uu)(window,f)。这个成语在几个地方都有使用)。谢谢。
标签: javascript oauth