adr*_*ian 5 node.js express passport.js
我正在尝试使用此登录示例设置facebook身份验证.示例有效,但当我退出并尝试再次登录时,护照会自动让我进入,而不会给我一个更改Facebook用户的选项.有关如何改变这种行为的任何想法?
默认情况下,如果您已经授权使用Facebook登录,则后续的身份验证请求将是自动的,并且不会提示用户再次进行授权.有三个选项可以更改此行为:
这是不可取的,因为您只想将用户从应用程序中注销而不是完全从Facebook注销.
这是你最好的选择.为此,HTTP DELETE请https://graph.facebook.com/me/permissions使用有效的Facebook访问令牌进行呼叫.有关详细信息,请访问https://developers.facebook.com/docs/reference/api/user/#permissions.
Facebook支持一个auth_type参数,每次设置时都会提示用户登录reauthenticate.欲了解更多信息,请访问https://developers.facebook.com/docs/howtos/login/client-side-re-auth/.
Passport.js不支持将此参数开箱即用,因此您可能需要进行一些黑客操作才能使其在您的应用程序中运行,或者向passport-facebook GitHub项目提交拉取请求.
但是,您可以选择通过使用特定参数来提示用户每次重新进行身份验证.下面这样做的工作但是hacky和不推荐的方式:
FacebookStrategy.prototype.authorizationParams = function (options) {
var params = {},
display = options.display,
auth_type = options.auth_type;
if (display) params['display'] = display;
if (auth_type) params['auth_type'] = auth_type;
return params;
};
passport.use(new FacebookStrategy({
clientID: FACEBOOK_APP_ID,
clientSecret: FACEBOOK_APP_SECRET,
callbackURL: "http://localhost:3000/auth/facebook/callback",
auth_type: "reauthenticate"
},
function(accessToken, refreshToken, profile, done) {
process.nextTick(function () {
return done(null, profile);
});
}
));
Run Code Online (Sandbox Code Playgroud)