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

问题描述:

在我的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(); 
      } 

     } 
    } 

请求发帖权限之前,应用程序应该要求权限读取用户的好友列表