我正在开发一个获取用户 facebook 好友列表的 Android 应用程序。
这是我的代码。
/**
*
* @param session
* @return
*/
private Request createRequest(Session session)
{
Request request = Request.newGraphPathRequest(session, "me/friends", null);
Set<String> fields = new HashSet<String>();
String[] requiredFields = new String[] { "id", "name", "picture",
"gender" };
fields.addAll(Arrays.asList(requiredFields));
Bundle parameters = request.getParameters();
parameters.putString("fields", TextUtils.join(",", fields));
request.setParameters(parameters);
return request;
}
private void requestMyFacebookFriends(Session session)
{
Request friendsRequest = createRequest(session);
friendsRequest.setCallback(new Request.Callback()
{
@Override
public void onCompleted(Response response)
{
List<GraphUser> friends = getResults(response);
mLovers = filterFriendsToMeetUserGenderPref(friends);
// Set list adapter to show available lovers or friends.
setListAdapter(new SelectLoversAdapter(SelectLoversActivity.this, R.layout.item_select_lovers, mLovers));
}
});
friendsRequest.executeAsync();
}
private List<GraphUser> getResults(Response response)
{
GraphMultiResult multiResult = response
.getGraphObjectAs(GraphMultiResult.class);
GraphObjectList<GraphObject> data = multiResult.getData();
return data.castToListOf(GraphUser.class);
}
private Session.StatusCallback statusCallback = new Session.StatusCallback()
{
@Override
public void call(final Session session, SessionState state, Exception exception)
{
if(session.isOpened())
{
requestMyFacebookFriends(session);
}
}
};
private static Session openActiveSession(Activity activity, boolean allowLoginUI, Session.StatusCallback statusCallback)
{
OpenRequest openRequest = new OpenRequest(activity);
openRequest.setPermissions(Arrays.asList("user_birthday", "email"));
openRequest.setCallback(statusCallback);
Session session = new Session.Builder(activity).build();
if(SessionState.CREATED_TOKEN_LOADED.equals(session.getState()) || allowLoginUI)
{
Session.setActiveSession(session);
session.openForRead(openRequest);
return session;
}
return null;
}
这里的主要方法是requestMyFacebookFriends
,但我有一个问题:**我不知道如何实例化一个com.facebook.Session
.
为了得到它,我使用openActiveSession
方法,但我不确定我是否必须做我所做的一切,因为我对 Facebook 开发非常陌生。
我openActiveSession
在另一个活动中使用来获取 facebook 访问令牌。
我的问题是:我必须做什么才能打开一个Session
来获取用户的 Facebook 好友列表?