Login with extra permission with Facebook SDK 3 for Android

17,186

I just answered a similar question on another post. My solution allows you to use a native button and request additional read permissions when the user first logs in. Check it out here Ask for more permissions with 3.0 SDK

Share:
17,186
Greenhand
Author by

Greenhand

Updated on June 05, 2022

Comments

  • Greenhand
    Greenhand almost 2 years

    I followed the step of "Create a new Android Project with Facebook Login" section at https://developers.facebook.com/docs/getting-started/facebook-sdk-for-android/3.0/ The login process is fine. Because I would like to use the native Android button for a user to log in, I modify the code slightly by moving the following code into a View.OnClickListener() of a native Android button. The following is the code in the listener:

    Session.openActiveSession(MainActivity.this, true, new Session.StatusCallback() {
        // callback when session changes state
        @Override
        public void call(Session session,SessionState state, Exception exception) {
            if (session.isOpened()) {                           
                // make request to the /me API
                Request.executeMeRequestAsync(session,new Request.GraphUserCallback() {
    
                    // callback after Graph API
                    // response with user object
                    @Override
                    public void onCompleted(GraphUser user,Response response) {
                        if (user != null) {
                            Toast.makeText(getApplicationContext(), "Hello " + user.getName() +" "+user.getId()+"!", Toast.LENGTH_LONG).show();
                        }
                    }
                });
            }
        }
    });
    

    The onActivityResult() and AndroidManifest.xml is the same as the tutorial

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data);
    }
    

    However, I would like to request get "read_friendlists" when a user logs in successfully. I read the tutorial at https://developers.facebook.com/docs/tutorials/androidsdk/3.0/scrumptious/authenticate/ but it uses Facebook SDK customized button. How can I achieve the same behavior with a native Android button like my code shown above?