Я использую следующий код. Я хочу, чтобы у пользователя была дата рождения, адрес электронной почты и пол. Пожалуйста помоги. Как получить эти данные?
Это мой onViewCreated()
внутренний фрагмент.
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
// Setup TextView.
mTextDetails = (TextView) view.findViewById(R.id.text_details);
// Set up Login Button.
LoginButton mButtonLogin = (LoginButton) view.findViewById(R.id.login_button);
// setFragment only if you are using it inside a Fragment.
mButtonLogin.setFragment(this);
mButtonLogin.setReadPermissions("user_friends");
mButtonLogin.setReadPermissions("public_profile");
mButtonLogin.setReadPermissions("email");
mButtonLogin.setReadPermissions("user_birthday");
// Register a callback method when Login Button is Clicked.
mButtonLogin.registerCallback(mCallbackManager, mFacebookCallback);
}
Это мой метод обратного вызова.
private FacebookCallback<LoginResult> mFacebookCallback = new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
Log.d("Shreks Fragment", "onSuccess");
Profile profile = Profile.getCurrentProfile();
Log.d("Shreks Fragment onSuccess", "" +profile);
// Get User Name
mTextDetails.setText(profile.getName() + "");
}
@Override
public void onCancel() {
Log.d("Shreks Fragmnt", "onCancel");
}
@Override
public void onError(FacebookException e) {
Log.d("Shreks Fragment", "onError " + e);
}
};
android
facebook-android-sdk
facebook-sdk-4.0
Сриянк Сиддхартха
источник
источник
Ответы:
Это неправильный способ установки разрешений, поскольку вы перезаписываете их при каждом вызове метода.
Заменить это:
Со следующим, как метод
setReadPermissions()
принимает ArrayList:Также вот как запросить дополнительные данные GraphRequest:
РЕДАКТИРОВАТЬ:
Одной из возможных проблем является то, что Facebook предполагает, что ваш адрес электронной почты является недействительным Чтобы проверить это, используйте Graph API Explorer и попробуйте получить его. Если даже там вы не можете получить свою электронную почту, измените ее в настройках своего профиля и попробуйте снова. Этот подход решил эту проблему для некоторых разработчиков, комментирующих мой ответ.
источник
loginButton.setReadPermissions(Arrays.asList("public_profile", "email"));
?Используйте этот фрагмент для получения всей информации профиля
источник
Вы не получите Профиль, который
onSuccess()
вам нужно реализоватьProfileTracker
вместе с регистрацией обратного вызова.Также не забудьте обработать запуск и остановку профиля трекера
Теперь у вас будет профиль для получения AccessToken (решена проблема с нулевым профилем). Вам просто нужно использовать « https://developers.facebook.com/docs/android/graph#userdata », чтобы получить любые данные.
источник
После входа в систему
источник
Вы можете использовать класс GraphRequest для отправки вызовов API Facebook Graph для получения информации о пользователе. См. Https://developers.facebook.com/docs/android/graph для получения дополнительной информации.
источник
Это работает для меня, надеюсь помочь кому-то (используя мою кнопку, а не кнопку входа FB)
источник
Ниже приведен код для поиска идентификатора электронной почты, имени, URL профиля и т. Д.
источник
Вот рабочее решение (2019): поместите этот код в логику входа в систему;
источник
Добавить эту строку при нажатии на кнопку
loginButton.setReadPermissions (Arrays.asList ("public_profile", "email", "user_birthday", "user_friends"));
источник
Используйте статический метод FB getCurrentProfile () класса Profile для получения этой информации.
источник