簡體   English   中英

沒有使用Android的Facebook SDK 3.1獲得Facebook朋友

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM