Mansi
Mansi

Reputation: 1949

Android Facebook SDK birthday returns null

I am using Facebook SDK(facebook-android-sdk-3.16) and try to retrieve user public_profile information.

But when I am try to get User Birthday It always gives me null

Here It my code:

public void onClick(View view) {

    openActiveSession(_mActivity, true, new Session.StatusCallback() {                  

        @Override
        public void call(Session session, SessionState state, Exception exception) {
            if (session.isOpened()) {

                Log.v(APP_TAG, " ============== " + session.getPermissions());
                Log.v(APP_TAG, " ============== " + session.isPermissionGranted("user_birthday"));
                //make request to the /me API);
                Request.executeMeRequestAsync(session, new Request.GraphUserCallback() {
                    @Override
                    public void onCompleted(GraphUser user, Response response) {
                        Log.d(APP_TAG, " ============== " + response);
                        if (user != null) {

                            _medtFName.setText(user.getFirstName());
                            _medtLName.setText(user.getLastName());
                            _medtEmailAddress.setText(user.getProperty("email").toString());
                            Log.i(APP_TAG, " ============== " + user.getBirthday());                                    

                            Log.i(APP_TAG, " ============== " + user.getProperty("gender").toString());
                        }
                    }
                });
             }
         }
     });
}


private static Session openActiveSession(Activity activity, boolean allowLoginUI, Session.StatusCallback callback) {
    Session.Builder builder = new Builder(activity);
    Session session = builder.build();
    Session.OpenRequest openRequest = new OpenRequest(activity);
    List<String> permission=new ArrayList<String>();
    permission.add("user_birthday");
    permission.add("user_likes");
    permission.add("user_location");
    permission.add("email");

    if (SessionState.CREATED_TOKEN_LOADED.equals(session.getState()) || allowLoginUI) {

        openRequest.setPermissions(permission);
        Session.setActiveSession(session);//This will take care of the null pointer
        openRequest.setCallback(callback);//the callback
        session.openForRead(openRequest);
        return session;
    }
    return null;
}

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

when I try to call session.isPermissionGranted("user_birthday") its gives false

How I get grated permission for user_birthday

Upvotes: 0

Views: 2983

Answers (2)

Ajit
Ajit

Reputation: 214

You are getting null because you need your APK reviewed by Facebook to get user's birthday, if you will try to login with developer's Facebook account (from which facebook application have been created) you will get birthday but for general public access you have to provide APK for review to Facebook.

Let me know if you have any queries.

Upvotes: 1

Gopal Sharma
Gopal Sharma

Reputation: 300

For birthday and Email address you can not get in first (Log in authentication ) call in this call you only gets user general profile only few parameters . If you want to fetch date of Birth / E mail/ friend list so you have to make separate call post authentication with specific permission. For permission go through the following link https://developers.facebook.com/docs/facebook-login/permissions

Upvotes: 0

Related Questions