Facebook graph api Chrome扩展和身份API:登录Facebook时,要求用户输入用户名+;密码,尽管他已登录FB
我正在开发一个Chrome扩展,并使用ChromeIdentityAPI执行FacebookOAuth2.0身份验证。就我个人而言,我正在最新的Chrome版本(64)上进行测试 原则上,登录流工作正常 然而,令我恼火的是,Chrome为一个新用户提供了一个Facebook登录窗口,其中包含空用户名和密码字段(参见我的屏幕截图),,尽管他目前在另一个选项卡登录Facebook。更糟糕的是,没有自动完成功能,所以用户必须逐字输入 为了获得最佳的用户体验,我希望登录屏幕不要求提供完整的凭据,而只显示一个“继续作为Steve”按钮 有趣的是,这发生在同一台计算机上的同一用户的后续登录尝试上——不再需要键入凭据 但我想让新用户的使用过程尽可能顺利 我的背景页面中的代码很简单: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。更糟糕的是,没有自动完成功能,所以用户必须逐字输入 为了获得最佳的用户体验,我希望登录屏幕不要求提供完整的凭据,而只显
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是最安全的,最适合这个目的的工具。