Parse platform 好友注销用户解析

Parse platform 好友注销用户解析,parse-platform,parse-cloud-code,buddy.com,Parse Platform,Parse Cloud Code,Buddy.com,我正在将一个应用程序从parse.com迁移到buddy.com。迁移的一个警告是,Parse.User.current()在buddy.com上不再可用,您必须从请求本身获取用户和会话令牌: 我正在迁移的应用程序有一个我正在尝试迁移的logoutUser方法: Parse.Cloud.define("logoutUser", function(request, response) { Parse.User.logOut().then( function onSuc

我正在将一个应用程序从parse.com迁移到buddy.com。迁移的一个警告是,
Parse.User.current()
在buddy.com上不再可用,您必须从请求本身获取用户和会话令牌:

我正在迁移的应用程序有一个我正在尝试迁移的
logoutUser
方法:

 Parse.Cloud.define("logoutUser", function(request, response) {
     Parse.User.logOut().then(
         function onSuccess(result){
             response.success(result);
         },
         function onError(error) {
            response.error(error);
         }
     )
 });
现在我尝试用新的方式来做这件事,但是我收到了一个错误。(注意:这是云代码,不是nodejs环境)

新的实施:

function logoutUser(request, response) {
    var user = request.user; 
    var sessionToken = user.getSessionToken();

    Parse.User.logOut({ sessionToken }).then(
        function onSuccess(result){
            response.success(result);
        },
        function onError(error) {
        response.error(error);
        }
    )
}

Parse.Cloud.define("logoutUser", function(request, response) {
    logoutUser(request, response);
});

关于如何在解析好友云代码时正确注销用户的建议

您可以获取用户的一个或多个会话并将其删除:

   var query = new Parse.Query("_Session");
   query.descending('createdAt');
   query.equalTo('user', {__type:"Pointer", className:"_User", objectId:"idhere"});
     query.first({
     useMasterKey: true
   }).then(function(session) {
    var sessions = [];
    sessions.push(session);
    Parse.Object.destroyAll(sessions);
   }, function (err) {
      console.log("Internal error " + err);
   });
或者,对于更多令牌,您可以使用find而不是first,如:

   var query = new Parse.Query("_Session");
   query.equalTo('user', {__type:"Pointer", className:"_User", objectId:"idhere"});
     query.find({
     useMasterKey: true
   }).then(function(sessions) {
    Parse.Object.destroyAll(sessions);
   }, function (err) {
      console.log("Internal error " + err);
   });
以上内容将主要删除或删除与给定用户相关的令牌。如果您只希望删除用于登录的令牌,而不希望删除用于注册或升级的令牌,则可以在查询中输入:

query.equalTo('createdWith', { action: 'login', authProvider: 'password'});

据我所知,删除用户最后一次用于登录的令牌,他就注销了。

要补充上述内容,如果您通过X-Parse-session-token头将用户的会话密钥传递给云代码函数,您可以直接在会话查询中使用填充的request.user对象,而不是用户的ID。

不确定您在这里要做什么。因为在任何云代码环境中都没有当前用户,所以他们无法注销。建议获取请求用户和会话令牌的解决方案是在运行任何Parse.Query时传递令牌。您不必在云代码中注销用户,只需在本地设备/浏览器上注销即可。@EReid-hmm好的,也许我误解了。我不熟悉云代码,尤其是这个应用程序。所以我猜这意味着注销在这个应用程序中从来都不起作用,因为注销功能是云代码功能。@EReid当你说在设备上本地注销时,这与解析有什么关系吗?或者仅仅是应用程序本身?我不太清楚
Parse.User
如何在原始Parse.com上工作的细节,因此无法真正评论它是否工作过。通过在本地注销,这完全取决于您使用的SDK。我知道Javascript SDK和Android SDK都有分别让用户注销的功能:
Parse.user.logOut()
ParseUser.logOut()。如果使用Rest api,您只需停止发送
X-Parse-Session-Token
头,并删除存储的令牌。是的,我们没有为web客户端使用任何SDK,只需发布并访问buddy.com端点即可。非常感谢,这真的很有帮助。如果你愿意向下移动,我很乐意将你最后的评论标记为答案。
query.equalTo('createdWith', { action: 'login', authProvider: 'password'});