解析Javascript SDK-将客户端`user`另存为服务器端`Parse.User.current()` [英] Parse Javascript SDK -- Save client-side `user` as server-side ` Parse.User.current()`

查看:97
本文介绍了解析Javascript SDK-将客户端`user`另存为服务器端`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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆