Ich verwende den folgenden Code. Ich möchte das Geburtsdatum, die E-Mail-Adresse und das Geschlecht des Benutzers. Bitte helfen Sie. Wie kann ich diese Daten abrufen?
Das ist mein onViewCreated()
Inneres im Fragment.
@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);
}
Dies ist meine Rückrufmethode.
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
quelle
quelle
Antworten:
Dies ist nicht der richtige Weg, um die Berechtigungen festzulegen, da Sie sie bei jedem Methodenaufruf überschreiben.
Ersetzen Sie dies:
Mit der folgenden Methode
setReadPermissions()
akzeptiert die Methode eine ArrayList:Außerdem erfahren Sie hier, wie Sie zusätzliche Daten abfragen: GraphRequest:
BEARBEITEN:
Ein mögliches Problem ist, dass Facebook davon ausgeht, dass Ihre E-Mail ungültig ist. Verwenden Sie zum Testen den Graph API Explorer und versuchen Sie, ihn abzurufen. Wenn Sie Ihre E-Mail auch dort nicht erhalten können, ändern Sie sie in Ihren Profileinstellungen und versuchen Sie es erneut. Dieser Ansatz löste dieses Problem für einige Entwickler, die meine Antwort kommentierten.
quelle
loginButton.setReadPermissions(Arrays.asList("public_profile", "email"));
?Verwenden Sie dieses Snippet, um alle Profilinformationen abzurufen
quelle
Sie erhalten kein Profil, das
onSuccess()
SieProfileTracker
zusammen mit der Registrierung des Rückrufs implementieren müssenVergessen Sie auch nicht, den Start und Stopp des Profil-Trackers zu regeln
Jetzt haben Sie ein Profil, von dem Sie AccessToken erhalten können (das Problem des Nullprofils wurde behoben). Sie müssen nur " https://developers.facebook.com/docs/android/graph#userdata " verwenden, um Daten abzurufen.
quelle
Nach dem Login
quelle
Mit der GraphRequest-Klasse können Sie Aufrufe an die Facebook Graph-API senden, um Benutzerinformationen abzurufen. Weitere Informationen finden Sie unter https://developers.facebook.com/docs/android/graph .
quelle
Dies funktioniert für mich, ich hoffe, jemandem zu helfen (mit meiner eigenen Schaltfläche nicht FB-Anmeldeschaltfläche)
quelle
Im Folgenden finden Sie den Code zum Suchen der E-Mail-ID, des Namens und der Profil-URL usw.
quelle
Hier ist eine funktionierende Lösung (2019): Fügen Sie diesen Code in Ihre Anmeldelogik ein.
quelle
Fügen Sie diese Zeile hinzu, indem Sie auf die Schaltfläche Klicken klicken
loginButton.setReadPermissions (Arrays.asList ("public_profile", "email", "user_birthday", "user_friends"));
quelle
Verwenden Sie die statische FB-Methode getCurrentProfile () der Profilklasse, um diese Informationen abzurufen.
quelle