2017-04-08 20 views
0

我正在使用以下代码来获取Facebook朋友的人数。但我只得到id作为回应。Facebook图api:未退回FriendsList数据

GraphRequest getFriendsCountRequest = GraphRequest.newGraphPathRequest(
       fbToken, 
       "/me", 
       new GraphRequest.Callback() { 
        @Override 
        public void onCompleted(
          GraphResponse response) { 
         // Application code 

         try { 
          System.out.println(response.getJSONObject().toString()); 
          Long friendsCount = response.getJSONObject() 
            .getJSONObject("friends") 
            .getJSONObject("summary") 
            .getLong("total_count"); 
          System.out.println("Total Friends: " + friendsCount); 
         } catch (JSONException e) { 
          Log.e(LoggedInActivity.class.getCanonicalName(), "Error in getting count from response", e); 
         } 

        } 
       }); 
     Bundle parameters = new Bundle(); 
     parameters.putString("fields", "friends"); 
     getFriendsCountRequest.setParameters(parameters); 
     getFriendsCountRequest.executeAsync(); 

当使用图形浏览器我得到/me/fields=friends

请帮忙预期的响应!

+0

添加'facebookLoginButton.setReadPermissions( “user_friends”); LoginButton解决了这个问题。 –

回答

0

试试这段代码:使用Graph API检索朋友列表。

public class MainActivity extends AppCompatActivity { 

CallbackManager callbackManager; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    facebookSDKInitialize(); 
    setContentView(R.layout.activity_main); 
    LoginButton loginButton = (LoginButton) findViewById(R.id.login_button); 
    loginButton.setReadPermissions("user_friends"); 
    getLoginDetails(loginButton); 
} 

/* 
* Register a callback function with LoginButton to respond to the login result. 
*/ 
protected void getLoginDetails(LoginButton login_button){ 

    // Callback registration 
    login_button.registerCallback(callbackManager, new FacebookCallback<LoginResult>() { 
     @Override 
     public void onSuccess(LoginResult login_result) { 
      GraphRequestAsyncTask graphRequestAsyncTask = new GraphRequest(
        login_result.getAccessToken(), 
        //AccessToken.getCurrentAccessToken(), 
        "/me/friends", 
        null, 
        HttpMethod.GET, 
        new GraphRequest.Callback() { 
         public void onCompleted(GraphResponse response) { 
          Intent intent = new Intent(MainActivity.this,FriendsList.class); 
          try { 
           JSONArray rawName = response.getJSONObject().getJSONArray("data"); 
           intent.putExtra("jsondata", rawName.toString()); 
           startActivity(intent); 
          } catch (JSONException e) { 
           e.printStackTrace(); 
          } 
         } 
        } 
      ).executeAsync(); 

     } 

     @Override 
     public void onCancel() { 
      // code for cancellation 
     } 

     @Override 
     public void onError(FacebookException exception) { 
      // code to handle error 
     } 
    }); 
} 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    callbackManager.onActivityResult(requestCode, resultCode, data); 
} 

protected void facebookSDKInitialize() { 

    FacebookSdk.sdkInitialize(getApplicationContext()); 
    callbackManager = CallbackManager.Factory.create(); 
} 

@Override 
protected void onResume() { 
    super.onResume(); 

    // Logs 'install' and 'app activate' App Events. 
    AppEventsLogger.activateApp(this); 
} 

@Override 
protected void onPause() { 
    super.onPause(); 

    // Logs 'app deactivate' App Event. 
    AppEventsLogger.deactivateApp(this); 
} 

在gradle这个:

compile 'com.facebook.android:facebook-android-sdk:4.6.0' 

下面是完整Example

+0

谢谢..我错过了这个mFacebookSignInButton.setReadPermissions(“user_friends”); –