Facebook graph api Chrome扩展和身份API:登录Facebook时,要求用户输入用户名+;密码,尽管他已登录FB

Facebook graph api Chrome扩展和身份API:登录Facebook时,要求用户输入用户名+;密码,尽管他已登录FB,facebook-graph-api,google-chrome-extension,login,oauth,facebook-oauth,Facebook Graph Api,Google Chrome Extension,Login,Oauth,Facebook Oauth,我正在开发一个Chrome扩展,并使用ChromeIdentityAPI执行FacebookOAuth2.0身份验证。就我个人而言,我正在最新的Chrome版本(64)上进行测试 原则上,登录流工作正常 然而,令我恼火的是,Chrome为一个新用户提供了一个Facebook登录窗口,其中包含空用户名和密码字段(参见我的屏幕截图),,尽管他目前在另一个选项卡登录Facebook。更糟糕的是,没有自动完成功能,所以用户必须逐字输入 为了获得最佳的用户体验,我希望登录屏幕不要求提供完整的凭据,而只显

我正在开发一个Chrome扩展,并使用ChromeIdentityAPI执行FacebookOAuth2.0身份验证。就我个人而言,我正在最新的Chrome版本(64)上进行测试

原则上,登录流工作正常

然而,令我恼火的是,Chrome为一个新用户提供了一个Facebook登录窗口,其中包含空用户名和密码字段(参见我的屏幕截图),,尽管他目前在另一个选项卡登录Facebook。更糟糕的是,没有自动完成功能,所以用户必须逐字输入

为了获得最佳的用户体验,我希望登录屏幕不要求提供完整的凭据,而只显示一个“继续作为Steve”按钮

有趣的是,这发生在同一台计算机上的同一用户的后续登录尝试上——不再需要键入凭据

但我想让新用户的使用过程尽可能顺利

我的背景页面中的代码很简单:

window.fbAsyncInit = function() {
  FB.init({
      appId          : `${facebook_app_id}`,
      cookie         : false,
      autoLogAppEvents : false,
      status       : false,
      xfbml            : false,
      version          : 'v2.11'
  });
};

(function(d, s, id){
  var js, fjs = d.getElementsByTagName(s)[0];
  if (d.getElementById(id)) {return;}
  js = d.createElement(s); js.id = id;
  js.src = "https://connect.facebook.net/en_US/sdk.js";
  fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));    

(...)

const TYPE = 'token';
const RANDOM_STRING = create_UUID();
const URI = chrome.identity.getRedirectURL()+"fb_oauth";
const AUTH_URL = `https://www.facebook.com/v2.11/dialog/oauth?
      client_id=${facebook_app_id}
      &redirect_uri=${URI}
      &state=${RANDOM_STRING}
      &response_type=${TYPE}
      &scope=email,user_likes`;
chrome.identity.launchWebAuthFlow({
  url: AUTH_URL,
  interactive: true
}, function(redirectURL) {
如何优化此功能?


你有没有观察到同样的行为?这可以通过Facebook开发设置中的特定设置或扩展启动登录流的方式来改进吗?

这似乎是
chrome.identity.launchWebAuthFlow
API的行为,既不美观也不友好。您可以尝试在facebook应用程序设置中启用
嵌入式浏览器OAuth login
并手动构建登录流。这将需要一些额外的标记。@holmberd是的,我想你可以在弹出窗口中创建自己的登录流,但我认为Chrome Identity API是最安全的,最适合这个目的的工具。