java - 如何在 Parse 中创建新用户而不更改当前用户?

标签 java android parse-platform parse-android-sdk

我目前正在制作一个好友请求模块。用户单击“批准”,程序将好友添加到 Parse Server 上的 _User 类中。我相信下面的代码可以做到这一点,而且确实如此,但问题是,它将当前用户更改为已添加的新 friend 。因此,如果当前用户是“Bob”,并且 Bob 添加了“Mike”,则新的当前用户是 Mike。

我一直在尝试使用 signUp()signUpInBackground(),但似乎都不起作用。

ParseUser newFriend = new ParseUser();
newFriend.setUsername(friendRequestFrom); //friendRequestFrom is a String that carries a name
newFriend.setPassword("12345");
newFriend.signUpInBackground(new SignUpCallback() {
    @Override
    public void done(ParseException e) {
        if(e == null){
            Log.i("Parse Result","Succesful!");
            Log.i("Current User",ParseUser.getCurrentUser().getUsername());
        }
        else{
            Log.i("Parse Result","Failed " + e.toString());
        }
    }
});

最佳答案

为了使用客户端代码在 Parse 中创建新的 Parse 用户,您必须使用应用后端托管的云代码功能。

事实上,出于安全原因,客户端库不允许直接添加用户。

在服务器端,创建一个包含以下代码的文件 (main.js):

Parse.Cloud.define("createNewUser", function(request, response) {
var User = Parse.Object.extend("User");
var us = new User();

us.set("username", request.params.username);
us.set("name", request.params.name);
us.set("email", request.params.email);
us.set("password", request.params.password);
us.save(null, {
    useMasterKey: true,
    success: function(obj) {
        response.success("user added");
    },
    error:function(err){
       response.error(err);         
    }
});       
});

然后,您可以在 JavaScript 客户端代码中测试此功能,如下所示:

var params =  { username: "userEmailAddress@yahoo.fr",
          email: "userEmailAddress@yahoo.fr",
          name:"Here write the user name",
          password:"TheUserPasswordHere"};

Parse.Cloud.run("createNewUser", params).then(function(response){console.log("response: "+response);}).catch(function (err) {
     console.log("error: "+err);
});

关于java - 如何在 Parse 中创建新用户而不更改当前用户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55931270/

相关文章:

Java Applet GUI 在 Applet 完成下载之前不会显示

java - JVM 错误 : Process finished with exit code 134 (interrupted by signal 6: SIGABRT)

java - 错误: Class does not expose a management interface

java - Android,如何从 Google Drive 文件选择器获取 "fileID"

android - 向 AndroidManifest 添加新服务会停止自动更新吗?

swift - 解析与 swift 的集成

java - Jenkins 运行被匿名 : The user id should be always non-null thanks to DefaultUserCanonicalIdResolver 中止

android - ViewPager 拦截所有 x 轴 onTouch 事件。如何禁用?

java - 用 fragment 解析

android - unpinAllInBackground(List<...>, Delete Callback) 后对象仍在本地存储中