Facebook SDK for Android:getfirstname()とgetLastName()NULL文字列を返す
-
21-12-2019 - |
質問
Facebook SDK 3.5を使用してAndroidネイティブアプリを開発しています。
私はFacebookの友達を選ぶことができるAutoCompleteTextViewを持っています。これについては、私は以下のようにnewmyfriendsRequestを使っています。
private void fbFriendsRequest(final Session session) {
Request request = Request.newMyFriendsRequest(session, new Request.GraphUserListCallback() {
@Override
public void onCompleted(List<GraphUser> listFacebookFriends, Response response) {
// If the response is successful
if (session == Session.getActiveSession()) {
if (listFacebookFriends != null) {
mAdapter = new GraphUserAdapter(FriendPicker.this, listFacebookFriends);
mAutoComplete.setAdapter(mAdapter);
Toast.makeText(FriendPicker.this,"Friends Loaded",Toast.LENGTH_SHORT).show();
}
}
if (response.getError() != null) {
// Handle errors, will do so later.
}
}
});
request.executeAsync();
}
.
それからユーザーがAutoCompleTetextViewから行を選択するたびに、この行を別のリストに追加し、[OK]ボタンを押すと、
public void onOkClick(View v) {
if(mGraphUsersList.size()==0) {
setResult(RESULT_CANCELED,null);
} else {
Intent returnIntent = new Intent();
Iterator<GraphUser> itr = mGraphUsersList.iterator();
int n = mGraphUsersList.size();
String[] idfb = new String[n];
String[] names = new String[n];
String[] lastnames = new String[n];
int i = 0;
while(itr.hasNext()) {
GraphUser User = (GraphUser) itr.next();
idfb[i]=User.getId();
names[i]=User.getFirstName(); // problem
lastnames[i]=User.getLastName(); // problem
i++;
}
returnIntent.putExtra("idfb",idfb);
returnIntent.putExtra("names",names);
returnIntent.putExtra("lastnames",lastnames);
setResult(RESULT_OK,returnIntent);
}
finish();
}
.
getfirstname()およびgetlastname()関数を使用すると、null文字列がありますが、getname()関数を使用した場合、名前+ lastNameを返します。NewMyfriendsRequestで与えられたリストにあるものが失われた場合のようなものです。
誰もがこのために回避策を知っていますか?
解決
id
とFriendsのname
以外のフィールドを取得するには、要求に明示的に指定する必要があります。
このようなリクエストのBundle
に追加します。
Request request = Request.newMyFriendsRequest(session, new Request.GraphUserListCallback() {
@Override
public void onCompleted(List<GraphUser> listFacebookFriends, Response response) {
// your code like you did
}
}
// here add fields explicitly
Bundle bundle = request.getParameters();
mBundle.putString("fields", "id,first_name,last_name");
// execute like you did
request.executeAsync();
.
これはあなたのための1つの解決策です、またはもう1つこのスーパーシンプルライブラリを使うことです:Android-Simple-Facebook
所属していません StackOverflow