使用Facebook登录Android解析更改用户名

时间:2015-05-26 14:20:09

标签: android facebook facebook-graph-api login parse-platform

我想用我从Facebook Graph API(我的请求)收到的用户名更新我的解析后端中的用户名。收到该名称正在运作。 执行loginwithreadPermissions-Method后,我有一个有效的accesstoken,但我无法在解析时更新用户名。

public void Login(View view) {
    Log.d("Facebook_login", "Login Executed");
       ParseFacebookUtils.logInWithReadPermissionsInBackground(Facebook_login.this, Arrays.asList("user_status", "read_stream", "user_about_me", "email", "public_profile"), new LogInCallback() {
           @Override
           public void done(final ParseUser user, ParseException err) {
            if(err!=null){
                Log.d("Facebook_login", err.getMessage());
            }
            if (user == null) {
                Log.d("Facebook_login", "Uh oh. The user cancelled the Facebook login.");
                Toast.makeText(Facebook_login.this,"User is still null, Login not Worked",Toast.LENGTH_SHORT).show();
            }
            else {
                accessToken = AccessToken.getCurrentAccessToken();
                GraphRequest request = GraphRequest.newMeRequest(
                        accessToken,
                        new GraphRequest.GraphJSONObjectCallback() {
                            @Override
                            public void onCompleted(
                                    JSONObject object,
                                    GraphResponse response) {
                                String username;
                                try{
                                    username= object.getString("name");

                                    Log.d("GraphRequestME", username);
                                    user.put("name",username);
                                    user.saveInBackground();
                                    user.getUsername();
                                    Log.d("GraphRequest",user.get("name").toString());
                                }
                                catch (Exception e){
                                    Log.e("Execption", e.getMessage());
                                }
                                Log.d("GraphRequestME", object.toString());
                            }
                        });
                Bundle parameters = new Bundle();
                parameters.putString("fields", "id,name,link");
                request.setParameters(parameters);
                request.executeAsync();
                Log.d("Facebook_login", "User logged in through Facebook!");
                }
            if(user!=null){
                if(accessToken!=null){
                    Log.d("AccessToken", accessToken.getToken());
                }
                Intent intent = new Intent(Facebook_login.this, MainActivity.class);
                Facebook_login.this.startActivity(intent);
                Log.d("Facebook_login", "LoggedInSuccessful");

            }
        }
    });
}

在Parse的快速入门指南(https://parse.com/docs/android/guide#users-signing-up)中,用user.put和更高版本的user.saveInBackground()来描述它,但这不是在这里工作。 有人可以帮忙吗?

2 个答案:

答案 0 :(得分:0)

使用Graph API v2.0已弃用username字段。迁移完所有应用后,您将无法再通过图谱API获取username

答案 1 :(得分:0)

解决! 我发现我必须首先删除用户,然后再次执行此操作并设置新属性。 在我看来,我无法使用user.put(...)

编辑现有用户