Ich verwende die Graph-API, kann jedoch nicht herausfinden, wie ich eine E-Mail-Adresse eines angemeldeten Benutzers erhalte.
In der Einführung zu Graph heißt es: "Die Graph-API bietet Zugriff auf alle grundlegenden Kontoregistrierungsdaten, die Sie normalerweise in einem Anmeldeformular für Ihre Website anfordern würden, einschließlich Name, E-Mail-Adresse, Profilbild und Geburtstag."
Alles schön und gut, aber wie greife ich auf diese Informationen zu?
Das habe ich bisher:
$json = $facebook->api('/me');
$first = $json['first_name']; // gets first name
$last = $json['last_name'];
php
json
facebook
facebook-graph-api
Kylex
quelle
quelle
var_dump($obj);
aus?Antworten:
Die einzige Möglichkeit, die E-Mail-Adresse des Benutzers abzurufen, besteht darin, erweiterte Berechtigungen für das E-Mail-Feld anzufordern. Der Benutzer muss zulassen, dass Sie dies sehen, und Sie können die E-Mail-Adressen der Freunde des Benutzers nicht abrufen.
http://developers.facebook.com/docs/authentication/permissions
Sie können dies tun, wenn Sie Facebook Connect verwenden, indem Sie scope = email in der get-Zeichenfolge Ihres Anrufs an das Auth-Dialogfeld übergeben.
Ich würde empfehlen, ein SDK anstelle von file_get_contents zu verwenden, da dies die Durchführung der Oauth- Authentifizierung erheblich erleichtert .
quelle
FB.api('/me?scope=email', function(apiResponse) { ... });
quelle
/me
Route beschreibt? Ich stöbere weiter in den Seiten der Graph API und kann sie nirgendwo finden :(Öffnen Sie base_facebook.php. Fügen Sie Access_token bei function hinzu
getLoginUrl()
und Bereich für E-Mail-Berechtigung verwenden
quelle
Um die Benutzer-E-Mail zu erhalten, müssen Sie sich mit der
email
Berechtigung mit seinem Facebook-Konto beim Benutzer anmelden . Verwenden Sie dazu das Facebook PHP SDK ( siehe auf github ) wie folgt.Überprüfen Sie zunächst, ob der Benutzer bereits angemeldet ist:
Wenn dies nicht der Fall ist, können Sie den Anmeldelink anzeigen und um
email
Erlaubnis bitten :Wenn er angemeldet ist, befindet sich die E-Mail im
$user_profile
Array.Hoffentlich hilft das !
quelle
Fügen Sie diesen Codeblock einfach bei der Statusrückgabe hinzu und übergeben Sie ein Abfragezeichenfolgenobjekt {}. Für JavaScript-Entwickler
Nach der Initialisierung Ihres SDK.
Schritt 1: // Anmeldestatus abrufen
Dadurch wird das Laden des Dokuments überprüft und Ihr Anmeldestatus überprüft, ob Benutzer angemeldet sind.
Dann wird die Funktion checkLoginState aufgerufen und die Antwort an statusChangeCallback übergeben
Schritt 2: Lassen Sie Sie die Antwortdaten aus dem Status abrufen
Dies hat auch die Benutzer-ID , die auf Variable gesetzt wird. Dann wird eine getUserInfo-Funktion aufgerufen, um Benutzerinformationen mithilfe der Graph-API abzurufen.
Nachdem die Benutzer-ID als Argument übergeben wurde, ruft die Funktion alle Informationen ab, die sich auf diese Benutzer-ID beziehen . Hinweis: In meinem Fall habe ich nach der E-Mail gesucht, um eine Funktion ausführen zu können, mit der Benutzer nur per E-Mail angemeldet werden können.
// Login per E-Mail
quelle
Sie können die E-Mail-Adresse aus dem Profil des angemeldeten Benutzers abrufen. Hier ist das Code-Snippet
quelle
$user_profile
enthält keine E-MailAngenommen, Sie haben E-Mail-Berechtigungen angefordert, als sich der Benutzer über Ihre App angemeldet hat und Sie über ein gültiges Token verfügen.
Mit der Fetch-API können Sie einfach
Ergebnis wird sein:
ID wird trotzdem zurückgegeben.
Sie können den Feldern Abfrageparameter mehr hinzufügen, benötigen jedoch Berechtigungen, wenn sie sich nicht im öffentlichen Profil befinden (Name ist öffentlich).
https://developers.facebook.com/docs/facebook-login/permissions
quelle
https://graph.facebook.com/me
Sie erhalten Informationen über den aktuell angemeldeten Benutzer, müssen jedoch ein Oauth-Token angeben. Sehen:
http://developers.facebook.com/docs/reference/api/user
quelle
Die E-Mail im Profil kann mit erweiterter Berechtigung abgerufen werden, aber ich denke, es ist nicht möglich, die E-Mail zum Anmelden von fb zu verwenden. In meiner App wollte ich mehrere fb-Konten eines Benutzers in einer Liste anzeigen, ich wollte die Anmelde-E-Mails von fb-Konten als eindeutige Kennung der jeweiligen Konten anzeigen, aber ich konnte sie nicht von fb entfernen, alles was ich bekam Die primäre E-Mail im Benutzerprofil, aber in meinem Fall unterscheiden sich meine Login-E-Mail und meine primäre E-Mail.
quelle
Stellen Sie sicher, dass Ihre Facebook-Anwendung veröffentlicht ist. Um Daten für E-Mail, public_profile und user_friends zu erhalten, muss Ihre App öffentlich zugänglich gemacht werden.
Sie können es später für Entwicklungszwecke deaktivieren und trotzdem ein E-Mail-Feld erhalten.
quelle
Die folgenden Tools können während der Entwicklung hilfreich sein:
https://developers.facebook.com/tools/debug/accesstoken/
https://developers.facebook.com/tools/explorer
quelle
Stellen Sie sicher, dass Sie die Versionsnummer der API vollständig angeben
"v2.11"
und nicht"2.11"
Ich bin mir nicht sicher, wie es standardmäßig ist, wenn dies falsch ist, aber ich habe einige seltsame Fehler beim Versuch, die E-Mail einfach abzurufen, als ich die verpasst habe
v
.quelle
Für mich bestand das Problem beim Sammeln der E-Mail-Adressen des Benutzers auf der PHP-Seite (getGraphUser () -Methode) darin, dass das Standardverhalten der von Facebook gerenderten Schaltfläche (auf der WEBSIDE-Seite, erstellt mit xfbml = 1) darin besteht, implizit FB.login () mit aufzurufen Der Geltungsbereich enthält NICHT "E-Mail".
Das heißt, Sie müssen:
1) anrufen
Offensichtlich erstellen Sie Ihre eigene Schaltfläche, um den Anmeldevorgang zu starten
ODER
2) Fügen Sie der xfbml-Schaltfläche das Attribut scope = "email" hinzu
E-Mail-Adresse auf PHP-Seite sammeln zu können.
Ich hoffe es hilft.
quelle