2017-04-13 28 views
1

我一直在使用這些引用的嘗試: https://developers.facebook.com/docs/graph-api/reference/user/friends無法從Android的Facebook中獲取好友列表。獲取空數組數

How to get friend list from Facebook using Android Facebook sdk?

How to fetch facebook friend list in android ? I am using facebook sdk 4.0.1

我也嘗試過其他的引用,但我不能讓我的問題的解決方案。

這裏是我的代碼

LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback<LoginResult>() { 
     @Override 
     public void onSuccess(final LoginResult loginResult) { 

      GraphRequest request = GraphRequest.newMeRequest(loginResult.getAccessToken(), new GraphRequest.GraphJSONObjectCallback() { 
       @Override 
       public void onCompleted(JSONObject object, GraphResponse response) { 

        System.out.println("Facebook recponse = "+response); 

        try { 
         sSocialId = object.getString("id"); 
         if (object.has("email")) { 
          sEmail = object.getString("email"); 
         } 
         sSocialType = "fb"; 
         sFirstname = object.getString("first_name"); 
         sLastname = object.getString("last_name"); 
         String gender = object.getString("gender"); 
         sGender = gender; 
         sUserImageUrl = "https://graph.facebook.com/" + sSocialId + "/picture?type=large"; 

        } catch (JSONException e) { 
         e.printStackTrace(); 
        } 

        AccessToken token1 = AccessToken.getCurrentAccessToken(); 
        /* 
        make the API call 
        */ 

        new GraphRequest(loginResult.getAccessToken(), 
          "/me/friendlists", 
          null, 
          HttpMethod.GET, 
          new GraphRequest.Callback() { 
           public void onCompleted(GraphResponse response) { 

            try { 
             JSONArray rawName = response.getJSONObject().getJSONArray("data"); 

             String friendList = "{\"friendlist\":" + rawName.toString() + "}"; 
             Log.d("TAG","response of friendlist is : " + friendList); 

            } catch (JSONException e) { 
             e.printStackTrace(); 
            } 
           } 
          } 
        ).executeAsync(); 

        Toast.makeText(HomeActivity.this,"Login successfull...",Toast.LENGTH_LONG).show(); 
       } 

      }); 

      Bundle parameters = new Bundle(); 
      parameters.putString("fields", "id, first_name, last_name,gender, email,picture,friends{id,name,picture}"); 
      request.setParameters(parameters); 
      request.executeAsync(); 

     } 

     @Override 
     public void onCancel() { 

      Toast.makeText(HomeActivity.this, "Facebook login cancelled", Toast.LENGTH_SHORT).show(); 
     } 

     @Override 
     public void onError(FacebookException exception) { 
      Toast.makeText(HomeActivity.this, "Error in Facebook login", Toast.LENGTH_SHORT).show(); 
     } 

    }); 

回答

0
public void getFriendList(String id) { //fbId 
    fbFriendsList = new ArrayList<>(); 
    new GraphRequest(
      AccessToken.getCurrentAccessToken(), 
      "/" + id + "/friends", 
      null, 
      HttpMethod.GET, 
      new GraphRequest.Callback() { 
       public void onCompleted(GraphResponse response) { 
        Log.e("response", response.toString()); 

        try { 
         JSONArray frienArray = ((JSONArray) (response.getJSONObject().get("data"))); 
         for (int i = 0; i < frienArray.length(); i++) { 
          FbFriends fbFriends = new FbFriends(); 
          JSONObject jsonObject = frienArray.getJSONObject(i); 

          fbFriends.setFbId(jsonObject.getString("id")); 
          fbFriendsList.add(fbFriends); 

         } 

        } catch (JSONException e) { 
         e.printStackTrace(); 
        } 
     /* handle the result */ 


       } 
      } 
    ).executeAsync(); 


} 

這裏fbFreindsList是modelClass fbFriends的列表,在這裏,我只取fbfriends的ID,你也可以根據您的要求

+0

由於數據獲得回答我的問題,但我仍面臨同樣的問題。 –

+0

你是否收到任何錯誤? –