简体   繁体   English

没有使用Android的Facebook SDK 3.1获得Facebook朋友

[英]Not getting Facebook Friends using Facebook sdk 3.1 for Android

In my android application Facebook Friends are loading on a button click.I have used following functions to get facebook friends.But I am not getting Facebook friends if the post permission is not given by the user.The session is getting as CLOSED_LOGIN_FAILED after giving Post permission.If the post permission is there Facebook friends loaded in the list view.What is problem in my code.Please help me .Thanks in advance. 在我的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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM