我正在开发一个获取用户的Facebook好友列表的Android应用程序。如何打开com.facebook.Session来获取用户的Facebook好友列表?
这是我的代码。
/**
*
* @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好友列表?
如果您已经在另一个活动中打开了活动会话,则可以在当前活动中调用Session.getActiveSession()并使用该会话(当然,请检查null和isOpened())。有关打开会话的详细信息,请参阅入门指南 - https://developers.facebook.com/docs/getting-started/facebook-sdk-for-android/3.0/ –