当尝试在cloude-code函数中获取用户对象时,request.user对象为null,但仅在从某个活动调用时才为null。该应用程序包含三个活动:Login,main和调用该功能的活动。如果我从主活动中调用它,request.user会按预期向用户提供,但从第三个活动调用时它为null。
登录代码:成功时开始主要活动。
ParseUser.logInInBackground(uName, uPassword, new LogInCallback() {
@Override
public void done(ParseUser parseUser, ParseException e) {
if (parseUser != null) {
Toast.makeText(getApplicationContext(), "Success!", Toast.LENGTH_LONG).show();
if (ParseUser.getCurrentUser().isAuthenticated()) {
Intent intent = new Intent(LoginActivity.this, MainActivity.class);
startActivity(intent);
finish();
}
}
}
});
此代码运行正常,我们已登录并向前发送。 主要活动代码太长了,无法在此发布,相关部分只是“statActivity(intent);”,但如果有人好奇:Pastebin
调用auth函数的函数。当从main运行时,request.user成为用户,当从第三个活动运行时(仅包含此函数和基本的android东西),它突然变为空。
public void onNewRandomGameClick(View v) {
ParseCloud.callFunctionInBackground("testUserAuth", new HashMap<String, Object>());
finish();
}
最后,服务器端代码。同样,来自一个活动而不是另一个活动。
Parse.Cloud.define("testUserAuth", function(request, response) {
console.log("Testing user authencation...");
if(request.user){
response.success();
console.log("We are authorized");
} else {
response.error("Authentication failed");
}
});