0
在我的Android應用程序Facebook的朋友正在加載一個按鈕click.I使用以下功能來獲取Facebook friends.But我沒有得到Facebook的朋友,如果沒有發佈權限。在授予Post權限後,會話獲得CLOSED_LOGIN_FAILED。如果發佈權限有Facebook好友加載到列表視圖中。在我的代碼中有什麼問題。請幫助我。提前感謝。沒有得到Facebook朋友使用Facebook的SDK 3.1 for Android
private boolean hasPublishPermission() {
Session session = Session.getActiveSession();
return session != null
&& session.getPermissions().contains("publish_stream");
}
private void getFacebookFriends(final Session session) {
Session msession = session;
if (msession.isOpened()) {
if (!hasPublishPermission()) {
if (progressDlg != null) {
progressDlg.dismiss();
}
msession.requestNewPublishPermissions(new NewPermissionsRequest(
FindFriendsActivity.this, PERMISSIONS));
} else {
if (progressDlg != null) {
progressDlg.dismiss();
}
Request friendRequest = Request.newMyFriendsRequest(msession,
new GraphUserListCallback() {
public void onCompleted(List<GraphUser> users,
Response response) {
fbfrndsDetails.clear();
isfindFriendsFromFB = false;
ArrayList<FriendsFinderRequest> data = new ArrayList<FriendsFinderRequest>();
for (int i = 0; i < users.size(); i++) {
Log.d("name", "" + users.get(i).toString());
FriendsDetails fbfrndDetail = new FriendsDetails();
JSONObject jobj;
try {
jobj = users.get(i)
.getInnerJSONObject();
Log.e("name",
"" + jobj.getString("name"));
Log.e("id", "" + jobj.getString("id"));
JSONObject ob = jobj
.getJSONObject("picture");
JSONObject obj = ob
.getJSONObject("data");
} catch (Exception e1) {
e1.printStackTrace();
}
}
if (progressDlg != null) {
progressDlg.dismiss();
}
}
});
Bundle params = new Bundle();
params.putString("fields", "id,name,picture");
friendRequest.setParameters(params);
friendRequest.executeAsync();
}
} else {
if (progressDlg != null) {
progressDlg.dismiss();
}
Session.OpenRequest openRequest = null;
openRequest = new Session.OpenRequest(FindFriendsActivity.this);
if (openRequest != null) {
openRequest.setDefaultAudience(SessionDefaultAudience.FRIENDS);
if (!hasPublishPermission()) {
openRequest.setPermissions(PERMISSIONS);
}
if (session.getState() == SessionState.CLOSED_LOGIN_FAILED) {
Session.setActiveSession(null);
msession = new Session(FindFriendsActivity.this);
Session.setActiveSession(msession);
msession.openForPublish(openRequest);
} else {
session.openForPublish(openRequest);
}
}
}
}
private void onSessionStateChange(Session session, SessionState state,
Exception exception) {
if (state.isOpened()) {
if (isfindFriendsFromFB) {
rootLayout.setVisibility(View.GONE);
progressDlg = ProgressDialog.show(FindFriendsActivity.this, "",
"Please wait");
Request friendRequest = Request.newMyFriendsRequest(session,
new GraphUserListCallback() {
public void onCompleted(List<GraphUser> users,
Response response) {
isfindFriendsFromFB = false;
ArrayList<FriendsFinderRequest> data = new ArrayList<FriendsFinderRequest>();
for (int i = 0; i < users.size(); i++) {
Log.d("name", "" + users.get(i).toString());
FriendsDetails fbfrndDetail = new FriendsDetails();
JSONObject jobj;
try {
jobj = users.get(i)
.getInnerJSONObject();
Log.e("name",
"" + jobj.getString("name"));
Log.e("id", "" + jobj.getString("id"));
JSONObject ob = jobj
.getJSONObject("picture");
JSONObject obj = ob
.getJSONObject("data");
} catch (Exception e1) {
e1.printStackTrace();
}
}
if (progressDlg != null) {
progressDlg.dismiss();
}
}
});
Bundle params = new Bundle();
params.putString("fields", "id,name,picture");
friendRequest.setParameters(params);
friendRequest.executeAsync();
}
} else if (state.isClosed()) {
if (progressDlg != null) {
progressDlg.dismiss();
}
}
}