解析Javascript SDK-将客户端`user`另存为服务器端`Parse.User.current()` [英] Parse Javascript SDK -- Save client-side `user` as server-side ` Parse.User.current()`
问题描述
从概念上讲,我可能做错了事,所以请告诉我我是否错了.
I might be doing the wrong thing conceptually, so pls tell me if I'm wrong.
我正在使用Parse的Facebook登录功能登录用户客户端.然后,我试图将此user object
发布到我的服务器上,以便可以在服务器端拥有该用户对象,但是我在文档中找不到与此相关的任何内容.
I'm signing in a user client-side using Parse's Facebook sign-on. I then am trying to post this user object
to my server so I can have that user object server-side, but I can't find anything in the docs regarding this.
我是否必须简单地传递user.objectId
然后重新获取该用户服务器端?还是有一种方法可以实际传递此用户,然后在服务器上将其设置为Parse.User.current()
?
Do I have to simply pass the user.objectId
and then re-fetch that user server-side? Or is there a way to actually pass this user and then set it as Parse.User.current()
on the server?
推荐答案
因此,我只需要从客户端登录名获取经过身份验证的sessionToken
并将其发布到服务器端即可.
So I just had to get the auth'd sessionToken
from the client-side login and post it server-side.
这是客户端Facebook登录.当用户单击登录按钮时,将调用fblogin
.我还省略了基本的Parse/FB init:
Here's the client-side Facebook login. fblogin
is called when user clicks the login button. I've also left out the basic Parse/FB init:
function fblogin(){
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);
}
});
}
然后是服务器端,我正在使用Parse.User
类的become()
接受该sessionToken
并将其转换为经过身份验证的用户服务器端:
And then server-side, I'm using become()
of the Parse.User
class to take that sessionToken
and turn it into an auth'd user server-side:
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);
});
}
这篇关于解析Javascript SDK-将客户端`user`另存为服务器端`Parse.User.current()`的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!