我正在使用Facebook圖形請求來檢索朋友列表。但是,如何在電話graphRequest.executeAsync()
完成後創建函數並將其返回?Facebook API如何等待graphRequest executeAsync完成
private Map<String, String> getFacebookFriends(AccessToken accessToken, Profile profile) throws InterruptedException, ExecutionException {
final Map<String, String> friendsMap = new HashMap<>();
GraphRequest graphRequest = new GraphRequest(accessToken, "/me/friends", null, HttpMethod.GET,
new GraphRequest.Callback() {
public void onCompleted(GraphResponse response) {
JSONObject jGraphObj = response.getJSONObject();
try {
JSONArray friendsData = jGraphObj.getJSONArray("data");
for (int i = 0; i < friendsData.length(); i++) {
JSONObject friend = friendsData.getJSONObject(i);
String friendId = friend.getString("id");
String friendName = friend.getString("name");
friendsMap.put(friendId, friendName);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
);
List<GraphResponse> gResponseList = graphRequest.executeAsync().get();
return friendsMap;
}
我目前使用的技術與this post相同。通過稱它爲graphRequest.executeAsync().get();
。但它似乎不起作用。
上述功能將在graphRequest
完成之前返回friendsMap
。
任何建議表示讚賞。
這幫了我極大。謝謝。 – Iorek