我想在Facebook上显示应用中的用户详细信息, 这是代码:
private String buildUserInfoDisplay(GraphUser user) {
StringBuilder userInfo = new StringBuilder("");
userInfo.append(String.format("Name: %s\n\n",
user.getName()));
userInfo.append(String.format("Birthday: %s\n\n",
user.getBirthday()));
userInfo.append(String.format("Location: %s\n\n",
user.getLocation().getProperty("name")));
userInfo.append(String.format("Locale: %s\n\n",
user.getProperty("locale")));
//JSONArray languages = (JSONArray)user.getProperty("languages");
GraphObjectList<MyGraphLanguage> languages =
(user.cast(MyGraphUser.class)).getLanguages();
if (languages.size() > 0) {
ArrayList<String> languageNames = new ArrayList<String> ();
for (MyGraphLanguage language : languages) {
languageNames.add(language.getName());
}
userInfo.append(String.format("Languages: %s\n\n",
languageNames.toString()));
}
return userInfo.toString();
}
private void onSessionStateChange(Session session, SessionState state,Exception exception)
{
if (state.isOpened()) {
userInfoTextView.setVisibility(View.VISIBLE);
Settings.addLoggingBehavior(LoggingBehavior.REQUESTS);
Request.newMeRequest(session, new Request.GraphUserCallback(){
@Override
public void onCompleted(GraphUser user, Response response) {
// TODO Auto-generated method stub
if (user != null) {
// Display the parsed user info
userInfoTextView.setText(buildUserInfoDisplay(user));
}
}}).executeAsync();
Log.i(TAG, "Logged in...");
} else if (state.isClosed()) {
userInfoTextView.setVisibility(View.INVISIBLE);
Log.i(TAG, "Logged out...");
}
}
提前感谢..
答案 0 :(得分:0)
在声明并初始化您的Facebook LoginButton后添加以下代码,
YOUR_Facebook_Loginbutton.setReadPermissions(Arrays.asList("user_location", "user_birthday", "user_likes"));
否则,请检查您是否在个人资料中添加了语言信息。 如果用户没有数据,则必须为null。 您可以在fb'关于'页面 - &gt;中查看语言信息。联系方式和基本信息
希望这可以帮到你! 参考:https://developers.facebook.com/docs/android/graph#userdata