在我的Android应用程序中,我正在使用 ParseCloud.callFunctionInBackground()来调用我的云函数:
Parse.Cloud.define("delete", function(request, response)
{
Parse.User.logOut();
Parse.User._currentUser = new Parse.User();
Parse.User._currentUser._if=request.params.user;
Parse.User._currentUser._sessionToken = request.params.token;
var query = new Parse.Query(Parse.User);
query.get(request.user)
.then(function(user)
{
Parse.User._saveCurrentUser(user);
response.success("User login valid!");
},
function(err)
{
response.error("Login failed: " + JSON.stringify(err));
});
});
虽然我预计这会登录用户,但它总是会返回“找不到对象”。我发送的是“ user.getObjectId()”和会话“ user.getSessionToken()”返回的用户ID。
答案 0 :(得分:1)
通过云代码登录的一般经验法则是调用logIn
函数,返回会话令牌,并在应用程序代码中调用becomeInBackground
方法,如下所示:
在您的云代码中:
Parse.User.logIn(username, password).then(function(user) {
response.success(user._sessionToken);
}, function(error) {
response.error(error);
});
然后在您的应用代码中:
// call cloud code function that returns sessionToken
ParseUser.becomeInBackground(sessionToken, new LogInCallback() {
@Override
public void done(ParseUser parseUser, ParseException e) {
if (e == null) {
// log in successful
} else {
// log in failed
}
}
});
答案 1 :(得分:0)
为什么不使用带解析的内置登录功能?
ParseUser.logInInBackground(username, password, new LogInCallback() {
@Override
public void done(ParseUser user, ParseException e) {
// TODO Auto-generated method stub
if(e == null)
loginSuccessful();
else
loginUnSuccessful();
}
});