[英]Not getting Facebook Friends using Facebook sdk 3.1 for Android
在我的Android应用程序中,Facebook Friends正在单击按钮加载。我已经使用以下功能来获取Facebook朋友。但是如果用户未授予发布权限,我就不会获得Facebook朋友。在发布Post后,该会话的显示为CLOSED_LOGIN_FAILED权限。如果有发布权限,则列表视图中已加载Facebook朋友。我的代码有什么问题。请帮助我。谢谢。
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();
}
}
}
在请求发布权限之前,应用程序应请求读取用户好友列表的权限
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.