迁移到自托管的Parse Server并未向我提供已登录的用户

时间:2016-07-24 10:02:12

标签: parse-server

我正在尝试将我的Parse服务器迁移到DigitalOcean中我自己的服务器实例。在部署我的parse-server后,我陷入了一些问题,我无法理解。

当您拨打Cloud Code时,如果您启用了可撤销会话,则可以将用户检索为request.user

一切都很好,但有时候(随机时间)我会遇到这种奇怪的行为:我的request.user没有出现在Cloud Code中。

我认为它可能是一个糟糕的会话令牌所以我通过这样做摆脱它:

if (!request.user) { 
    response.error("INVALID_SESSION_TOKEN"); 
    return; 
}

并使用户再次登录。

这不起作用,我每次登录时都会收到INVALID_SESSION_TOKEN,所以我决定调试。这些是我的步骤:

1.-登录我的用户,创建一个_Session对象:

enter image description here

所以sessionToken是r:a425239d4184cd98b9b693bbdedfbc9c

2.-制作呼叫云功能(嗅探日志):

  

POST / parse-debug / functions / getHomeAudios HTTP / 1.1

     

X-Parse-OS-Version:6.0.1

     

X-Parse-App-Build-Version:17

     

X-Parse-Client-Key:****(隐藏)

     

X-Parse-Client-Version:a1.13.0

     

X-Parse-App-Display-Version:1.15.17

     

X-Parse-Installation-Id:d7ea4fa0-b4dc-4eff-9b7d-ff53a1424dcb

     

User-Agent:解析Android SDK 1.13.0(com.pronuntiapp.debug.uat / 17)API   等级23

     

X-Parse-Session-Token:r:a425239d4184cd98b9b693bbdedfbc9c

     

X-Parse-Application-Id:****(隐藏)

     

内容类型:应用“WÇX

     

内容长度:346

     

主持人:46.101.89.192:1338

     

连接:Keep-Alive

     

Accept-Encoding:gzip

3.- request.user仍未出现在CloudCode上。

编辑:重置parse-server在这种情况下工作,但在其他一些情况下没有。

1 个答案:

答案 0 :(得分:0)

几天前我得到了解决方案。 成功部署Parse服务器后,您将从云的任何端点获得request.user,但如果您从云中调用云功能,则至少无法获得此request.user你通过了sessionToken

Parse.Cloud.define("foo", function(request, response) {
    if (!request.user) {
      response.error("INVALID_SESSION_TOKEN");
      return;
    }

    var countResponses = 0;
    var responsesNeeded = 1;

    Parse.Cloud.run('bar', request.params, {
                    sessionToken: request.user.getSessionToken(),
                    success: function(c) {
                      countResponses++;
                      result = c;
                      if (countResponses >= responsesNeeded) {
                        response.success(result);
                      }
                    },
                    error: function(error) {
                      response.error(error);
                    }
                  });
});

在这种情况下,除非您通过foo,否则request.userbarsessionToken获胜。