День рождения Android Facebook SDK возвращается
Я использую Facebook SDK(facebook-android-sdk-3.16) и пытаюсь получить информацию пользователя public_profile.
Но когда я пытаюсь получить день рождения пользователя, он всегда дает мне ноль
Вот это мой код:
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);
}
когда я пытаюсь позвонить session.isPermissionGranted("user_birthday")
это дает false
Как я получаю разрешение на user_birthday
2 ответа
Вы получаете нулевое значение, потому что вам нужно, чтобы ваш APK был проверен Facebook, чтобы получить день рождения пользователя. Если вы попытаетесь войти в систему с учетной записью разработчика Facebook (из которой было создано приложение Facebook), вы получите день рождения, но для общего доступа вы должны предоставить APK для просмотра в Facebook.
Дайте мне знать, если у вас есть какие-либо вопросы.
Для дня рождения и адреса электронной почты вы не можете войти в первый (вход в систему аутентификация) вызов в этом вызове, вы получаете только общий профиль пользователя только несколько параметров. Если вы хотите получить дату рождения / E-mail / список друзей, то вам нужно сделать отдельную аутентификацию после звонка с определенным разрешением. Для получения разрешения перейдите по следующей ссылке https://developers.facebook.com/docs/facebook-login/permissions