Android 如何从Facebook获取用户的姓名?
我在尝试获取通过Facebook登录的解析用户的名称时遇到了很大的问题 登录工作正常,我可以在parse data browser上看到用户令牌,ParseUser.getCurrentUser返回一个ParseUser和所有,但我不知道我可以从facebook获取用户的名称吗 到目前为止,我的代码是Android 如何从Facebook获取用户的姓名?,android,facebook,facebook-graph-api,login,Android,Facebook,Facebook Graph Api,Login,我在尝试获取通过Facebook登录的解析用户的名称时遇到了很大的问题 登录工作正常,我可以在parse data browser上看到用户令牌,ParseUser.getCurrentUser返回一个ParseUser和所有,但我不知道我可以从facebook获取用户的名称吗 到目前为止,我的代码是 ParseFacebookUtils.logIn(C_RegisterLogin.this, new LogInCallback() { @Override public void
ParseFacebookUtils.logIn(C_RegisterLogin.this, new LogInCallback()
{
@Override
public void done(ParseUser user, ParseException err)
{
progressdialog.dismiss();
if (user == null)
{
Toast toast = Toast.makeText(getApplicationContext(), "Login via Facebook failed!", Toast.LENGTH_LONG);
toast.setGravity(Gravity.TOP, 0, 20);
toast.show();
}
else
{
if (user.isNew())
{
}
List args = new ArrayList<String>();
args.add("name");
JSONObject result = new JSONObject(ParseFacebookUtils.getSession().requestNewReadPermissions(C_RegisterLogin.this, args);
String facebookname = result.optString("name");
Toast toast = Toast.makeText(getApplicationContext(), "Thanks, "+facebookname+". You are now successfully logged in!", Toast.LENGTH_LONG);
toast.setGravity(Gravity.TOP, 0, 20);
toast.show();
finish();
startActivity(new Intent(C_RegisterLogin.this, E_SelectJourney.class));
}
}
});
ParseFacebookUtils.logIn(C_RegisterLogin.this,new LogInCallback()
{
@凌驾
公共无效完成(ParseUser用户,ParseException错误)
{
progressdialog.disclose();
if(user==null)
{
Toast Toast=Toast.makeText(getApplicationContext(),“通过Facebook登录失败!”,Toast.LENGTH\u LONG);
toast.setGravity(Gravity.TOP,0,20);
toast.show();
}
其他的
{
if(user.isNew())
{
}
List args=new ArrayList();
参数添加(“名称”);
JSONObject结果=新建JSONObject(ParseFacebookUtils.getSession().requestNewReadPermissions(C_RegisterLogin.this,args);
字符串facebookname=result.optString(“名称”);
Toast Toast=Toast.makeText(getApplicationContext(),“谢谢,”+facebookname+“。您现在已成功登录!”,Toast.LENGTH\u LONG);
toast.setGravity(Gravity.TOP,0,20);
toast.show();
完成();
startActivity(新意图(C_RegisterLogin.this,E_selectTravely.class));
}
}
});
解决了这个问题,只需要使用facebook上的Request.executeRequestAsync,对于它的session参数,我使用session Parse给我:D
if (ParseFacebookUtils.getSession().isOpened())
{
Request.executeMeRequestAsync(ParseFacebookUtils.getSession(), new Request.GraphUserCallback()
{
@Override
public void onCompleted(GraphUser user, Response response)
{
if (user != null)
{
progressdialog.dismiss();
Toast toast = Toast.makeText(getApplicationContext(), "Thanks, " + user.getName() + ". You are now successfully logged in through Facebook!", Toast.LENGTH_LONG);
toast.setGravity(Gravity.TOP, 0, 20);
toast.show();
finish();
startActivity(new Intent(C_RegisterLogin.this, E_SelectJourney.class));
}
}
});
}
Request.executeMeRequestAsync方法已被弃用,因此对于facebook sdk 3.21,您需要使用
if (ParseFacebookUtils.getSession().isOpened()){
Request.newMeRequest(ParseFacebookUtils.getSession(), new Request.GraphUserCallback()
{
@Override
public void onCompleted(GraphUser user, Response response)
{
if (user != null)
{
progressdialog.dismiss();
Toast toast = Toast.makeText(getApplicationContext(), "Thanks, " + user.getName() + ". You are now successfully logged in through Facebook!", Toast.LENGTH_LONG);
toast.setGravity(Gravity.TOP, 0, 20);
toast.show();
finish();
startActivity(new Intent(C_RegisterLogin.this, E_SelectJourney.class));
}
}
}).executeAsync();}