所以我只需要获得授权sessionToken
从客户端登录并将其发布到服务器端。
这是客户端 Facebook 登录。fblogin
当用户单击登录按钮时调用。我还省略了基本的 Parse/FB 初始化:
函数 fblogin() {
console.log("fblogin -- start");
Parse.FacebookUtils.logIn(null, {
success: function(user) {
if (!user.existed()) {
postFBLogin(user);
} else {
console.log("fblogin -- else -- user.sessionToken = " + user._sessionToken);
postFBLogin(user);
}
},
error: function(user, error) {
alert("User cancelled the Facebook login or did not fully authorize. Error =" + error.message);
}
});
}
function postFBLogin(user) {
console.log("postFBLogin -- start -- user = " + user);
var sessionToken = user._sessionToken;
// Post the login
$.ajax({
url: '/fblogin',
type: 'post',
// dataType: json,
data: {sessionToken: sessionToken},
success: function(data) {
console.log("post error = " + data.errorCode + data.errorMessage);
if (data.status === 200) {
// window.location = '/home/language';
}
// If an error, show the prompt
if (data.errorCode === 101) {
$('#login-alert').show().text("Facebook login error.");
}
},
error: function(error) {
console.log("postFBLogin -- post error = " + data.errorCode + data.errorMessage);
}
});
}
然后在服务器端,我正在使用become()
of the Parse.User
上课sessionToken
并将其转换为服务器端的授权用户:
exports.fblogin = function(req,res) {
// var defaultLanguage = req.app.get('defaultLanguage');
var sessionToken = req.body.sessionToken;
Parse.User.become(sessionToken).then(function (user) {
console.log("exports.fblogin -- become -- success");
// The current user is now set to user.
res.redirect('/home/language');
}, function (error) {
// The token could not be validated.
console.log("exports.fblogin -- become -- error = " + error);
});
}