我可能在概念上做错了,所以请告诉我,如果我错了。
我正在使用Parse的Facebook登录在用户客户端登录。然后我尝试将此user object
发布到我的服务器上,以便我可以在服务器端拥有该用户对象,但我在文档中找不到任何与此相关的内容。
我是否必须简单地传递user.objectId
,然后重新获取该用户服务器端?或者有没有办法实际传递此用户,然后在服务器上将其设置为Parse.User.current()
?
答案 0 :(得分:2)
所以我只需从客户端登录中获取auth' d sessionToken
并将其发布到服务器端。
这是客户端Facebook登录。用户单击登录按钮时会调用fblogin
。我还遗漏了基本的Parse / FB init:
function 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()
类的Parse.User
来获取sessionToken
并将其转换为auth&dd用户服务器端:
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);
});
}
答案 1 :(得分:0)
当您调用云功能或触发Before / AfterSave方法时,您已经有权访问该用户:
Parse.Cloud.define('myFunction', function(request, response) {
// the current user is in: request.user
});