Search code examples
androidfacebookfacebook-graph-apifacebook-android-sdk

How to get updated user data from second time when when open my android app second time after sign up with Facebook?


I tried to get updated data from Graph API using accessToken but it always showing Logout button screen.

accessTokenTracker = new AccessTokenTracker() {
            @Override
            protected void onCurrentAccessTokenChanged(AccessToken oldAccessToken, AccessToken newAccessToken) {
                accessToken = newAccessToken;
            }
        };

@Override
protected void onDestroy() {
    super.onDestroy();
    if(isFromFb){
        accessTokenTracker.stopTracking();
    }
}
if(accessToken != null) {

            GraphRequest request = GraphRequest.newMeRequest(accessToken, new GraphRequest.GraphJSONObjectCallback() {
                @Override
                public void onCompleted(JSONObject object, GraphResponse response) {
                    Log.d("TestLog user : " , object.toString());
                }
            });
            Bundle parameters = new Bundle();
            parameters.putString("fields", "id,name,email,gender, birthday,picture.type(large),friends");
            request.setParameters(parameters);
            request.executeAsync();
        }

enter image description here

How to get latest profile data second time on wards in Facebook SDK 4.0


Solution

  • Sorry I did a small mistake there final I got the answer. I need to get current accessToken first. But earlier I taken only when onCurrentAccessTokenChanged method.

    accessToken = AccessToken.getCurrentAccessToken();
    accessTokenTracker = new AccessTokenTracker() {
            @Override
            protected void onCurrentAccessTokenChanged(AccessToken oldAccessToken, AccessToken newAccessToken) {
                accessToken = newAccessToken;
            }
        };
    
    @Override
    protected void onDestroy() {
        super.onDestroy();
        if(isFromFb){
            accessTokenTracker.stopTracking();
        }
    }
    
    if(accessToken != null) {
    
                GraphRequest request = GraphRequest.newMeRequest(accessToken, new GraphRequest.GraphJSONObjectCallback() {
                    @Override
                    public void onCompleted(JSONObject object, GraphResponse response) {
                        Log.d("TestLog user : " , object.toString());
                    }
                });
                Bundle parameters = new Bundle();
                parameters.putString("fields", "id,name,email,gender, birthday,picture.type(large),friends");
                request.setParameters(parameters);
                request.executeAsync();
            }