我正在处理一个非常棘手的 Chrome 扩展身份验证问题(“无法加载授权页面。”)。就上下文而言,发布到 Chrome 商店的我的插件版本没有这些身份验证问题,只是我的本地副本遇到了此问题。
我设置后端应用程序来执行 FB OAuth2。我正确处理 FB 登录,并重定向到“https://.chromiumapp.org/#authentication_token=#{auth_token}&email=#{email}”。这就是错误发生的时候。在我的生产扩展中,我从redirect_url(标准)中提取身份验证令牌并将其嵌入到扩展中。在我的开发扩展(具有相同的代码)中,回调有一个未定义的redirect_url(回调函数中的第一个参数)。下面是逻辑:
chrome.identity.launchWebAuthFlow(
{'url': requestUrl, 'interactive': true},
function(redirect_url) {
if (redirect_url) {
var queryString = redirect_url.split(/[\#\&]/);
if (queryString.length > 1) {
window.tokens = queryString.slice(1).map(function(token){
return token.split('=')[1];
});
}
var authToken = tokens[0];
var email = tokens[1];
if (authToken) {
...
} else {
...
}
}
);
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,redirect_url返回为未定义。什么可能导致这个未定义?必须存在一些redirect_url,否则回调甚至不会运行。这里发生了什么?