小编Tor*_*yne的帖子

chrome.identity.launchWebAuthFlow 回调返回未定义的redirect_url

我正在处理一个非常棘手的 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,否则回调甚至不会运行。这里发生了什么?

javascript facebook google-chrome google-chrome-extension

5
推荐指数
0
解决办法
947
查看次数