我正在尝试将我的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
对象:
所以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
在这种情况下工作,但在其他一些情况下没有。
答案 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.user
将bar
和sessionToken
获胜。