Reputation: 1949
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
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
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