使用android登录Parse云代码

时间:2015-05-22 14:04:40

标签: android parse-platform cloud-code

在我的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。

2 个答案:

答案 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();
        }
    });