Android Facebook - get null profile

后端 未结 2 738
小鲜肉
小鲜肉 2021-01-26 04:24

First time with Facebook SDK. I can\'t get users profile. Its always null. What\'s wrong?

btnFbWidget = (LoginButton) findViewById(R.id.btnFbWidget);
btnFbWidget         


        
2条回答
  •  闹比i
    闹比i (楼主)
    2021-01-26 04:52

    Try with this method.

    Initialize facebook SDK firstly.

     @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    
        //init facebook sdk and 
        FacebookSdk.sdkInitialize(getApplicationContext());
    
        setContentView(R.layout.activity_main);
    
    
    
        //instantiate callbacks manager
        mCallbackManager = CallbackManager.Factory.create();
    
       btnFbWidget=(LoginButton)findViewById(R.id.login_button);
    
       btnFbWidget.registerCallback(mCallbackManager, this);
    
      btnFbWidget.setReadPermissions(Arrays.asList("user_status","email"));
    
    
    
    }
    
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    
        super.onActivityResult(requestCode, resultCode, data);
        //manage login result
        mCallbackManager.onActivityResult(requestCode, resultCode, data);
    }
    
    
    public void onSuccess(LoginResult loginResults) {
    
    
    
        Toast.makeText(getApplicationContext(), "Success ",
                   Toast.LENGTH_LONG).show();
    
    
    }
    public void onCancel() {
    
    
    
    }
    
    
    public void onError(FacebookException e) {
    
    
    }
    

    And then to get the User Profile use this method.

    private static String uid,email;

    public void getUserProfile() {

    GraphRequest request = GraphRequest.newMeRequest(
            AccessToken.getCurrentAccessToken(),
            new GraphRequest.GraphJSONObjectCallback() {
                @Override
                public void onCompleted(
                        JSONObject object,
                        GraphResponse response) {
                    // Application code
                    Log.v("LoginActivity", response.toString());
    
                    try {
                        //and fill them here like so.
                        uid = object.getString("id");
                        email = object.getString("email")
    
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                    getGroups();
                }
            });
      // If you want to pass data to other activity. 
      Bundle parameters = new Bundle();
      parameters.putString("userdata", "email");
      request.setParameters(parameters);
      request.executeAsync();
    

    }

    And do call this method getUserProfile() in your on create.

    EDIT 1 :

    Change in read permissions.

    btnFbWidget.setReadPermissions(Arrays.asList("public_profile", "email", "user_birthday", "user_friends"));
    

    And accordingly you can get further information like.

    String email = object.getString("email");
    String birthday = object.getString("birthday");
    

提交回复
热议问题