1

I need user email address, I want to set email permission inside facebook sdk.

Can you give me some idea to do this.

my code:

 @Deprecated
    public void authorize(Activity activity, String[] permissions, final DialogListener listener) {
        permissions =new String[] {"offline_access","video_upload","publish_stream","user_photos","email","read_friendlists"};      
        authorize(activity, permissions, DEFAULT_AUTH_ACTIVITY_CODE, SessionLoginBehavior.SSO_WITH_FALLBACK, listener);
    }

i done like this. this is not working.

Jeeva123
  • 1,047
  • 3
  • 20
  • 34

3 Answers3

3

Try this:

you set the permission like 
String[] Permissions = {"email", "offline_access"};
Android_coder
  • 9,953
  • 3
  • 17
  • 23
  • where i want to set permission. – Jeeva123 Feb 06 '13 at 13:37
  • you set this permission into your login screen and call like this mLoginButton.init(this, AUTHORIZE_ACTIVITY_RESULT_CODE, Utility.mFacebook, permissions); – Android_coder Feb 06 '13 at 13:41
  • mLoginButton.init is not available. init method not available. – Jeeva123 Feb 06 '13 at 13:44
  • you use pass parameter permission facebook authorize method like this mFacebook.authorize(mActivity, mPermissions, mActivityCode, new LoginDialogListener()); – Android_coder Feb 06 '13 at 13:47
  • I attempted to set read permissions like this : `authButton.setReadPermissions(Arrays.asList("email"));` and then tried to access the email like this `user.asMap().get("email")` but it always returns `null`. – Etienne Lawlor Aug 09 '13 at 18:43
1

Change your authorize code like below:

 public void authorize(Activity activity, String[] permissions,
        int activityCode, final DialogListener listener) {

    boolean singleSignOnStarted = false;

    mAuthDialogListener = listener;

    // Prefer single sign-on, where available.
    if (activityCode >= 0) {
        singleSignOnStarted = startSingleSignOn(activity, mAppId,
                permissions, activityCode);
    }
    // Otherwise fall back to traditional dialog.
    if (!singleSignOnStarted) {
        startDialogAuth(activity, permissions);
    }
}
Android_coder
  • 9,953
  • 3
  • 17
  • 23
0

I have checked this question, it is pretty simple. Here is the code what you wanted:

Session currentSession = Session.getActiveSession();
    if (currentSession == null || currentSession.getState().isClosed()) {
        Session session = new Session.Builder(context).build();
        Session.setActiveSession(session);
        currentSession = session;
    }

    if (currentSession.isOpened()) {
        // Do whatever u want. User has logged in

    } else if (!currentSession.isOpened()) {
        // Ask for username and password
        OpenRequest op = new Session.OpenRequest((Activity) context);

        op.setLoginBehavior(SessionLoginBehavior.SUPPRESS_SSO);
        op.setCallback(null);

        List<String> permissions = new ArrayList<String>();
        permissions.add("publish_stream");
        permissions.add("user_likes");
        permissions.add("email");
        permissions.add("user_birthday");
        op.setPermissions(permissions);

        Session session = new Builder(MainActivity.this).build();
        Session.setActiveSession(session);
        session.openForPublish(op);
    }

Now, on onActivityResult see if session is open and do your work there, like getting userID, access_token and all that.

Hope this will help you in some manner.

Anupam
  • 3,742
  • 18
  • 55
  • 87