Używam następującego kodu. Chcę podać datę urodzenia, adres e-mail i płeć użytkownika. Proszę pomóż. Jak odzyskać te dane?
To jest moje onViewCreated()
wnętrze Fragmentu.
@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);
}
To jest moja metoda oddzwaniania.
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
Sriyank Siddhartha
źródło
źródło
Odpowiedzi:
To nie jest właściwy sposób ustawiania uprawnień, ponieważ nadpisujesz je przy każdym wywołaniu metody.
Zastąp to:
Z następującym, ponieważ metoda
setReadPermissions()
akceptuje ArrayList:Tutaj również opisano, jak zapytać o dodatkowe dane GraphRequest:
EDYTOWAĆ:
Jednym z możliwych problemów jest to, że Facebook zakłada, że Twój adres e-mail jest nieprawidłowy. Aby to przetestować, użyj Graph API Explorer i spróbuj go pobrać. Jeśli nawet tam nie możesz odebrać wiadomości e-mail, zmień ją w ustawieniach profilu i spróbuj ponownie. Takie podejście rozwiązało ten problem w przypadku niektórych programistów komentujących moją odpowiedź.
źródło
loginButton.setReadPermissions(Arrays.asList("public_profile", "email"));
?Użyj tego fragmentu, aby uzyskać wszystkie informacje o profilu
źródło
Nie dostaniesz Profilu,
onSuccess()
który musisz wdrożyćProfileTracker
wraz z rejestracją oddzwonieniaNie zapomnij również obsługiwać uruchamiania i zatrzymywania funkcji śledzenia profilu
Teraz będziesz mieć profil, z którego możesz uzyskać AccessToken (rozwiązano problem z pustym profilem). Aby uzyskać jakiekolwiek dane, wystarczy użyć „ https://developers.facebook.com/docs/android/graph#userdata ”.
źródło
Po zalogowaniu
źródło
Możesz użyć klasy GraphRequest, aby wywołać interfejs API Graph w serwisie Facebook w celu uzyskania informacji o użytkowniku. Więcej informacji można znaleźć pod adresem https://developers.facebook.com/docs/android/graph .
źródło
To działa dla mnie, mam nadzieję, że komuś pomogę (używając własnego przycisku, a nie przycisku logowania FB)
źródło
Poniżej znajduje się kod umożliwiający znalezienie identyfikatora e-mail, nazwy i adresu URL profilu itp
źródło
Oto działające rozwiązanie (2019): umieść ten kod w logice logowania;
źródło
Dodaj tę linię na Kliknij przycisk
loginButton.setReadPermissions (Arrays.asList ("public_profile", "email", "user_birthday", "user_friends"));
źródło
Użyj statycznej metody FB getCurrentProfile () klasy Profile, aby pobrać te informacje.
źródło