我想用我从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()来描述它,但这不是在这里工作。 有人可以帮忙吗?
答案 0 :(得分:0)
使用Graph API v2.0已弃用username
字段。迁移完所有应用后,您将无法再通过图谱API获取username
。
答案 1 :(得分:0)
解决! 我发现我必须首先删除用户,然后再次执行此操作并设置新属性。 在我看来,我无法使用user.put(...)
编辑现有用户