Warum ist die Facebook-Login modal nicht aufgefordert Benutzer für den Zugriff auf ihre E-Mail-Adresse?

stimmen
0

Ich versuche, die Facebook-Login fließt in eine Webseite zu integrieren, und ich habe Probleme mit dem Versuch, die Login-modal auf Anfrage Zugriff auf die Benutzerfacebook E-Mail-Adresse zu erzwingen.

Insbesondere bin ich die Ausführung der folgenden Code aus meinem JS:

FB.login((response) => {
    if (response.status === 'connected' &&
        response.authResponse) {
        // Do something with the response here.
    }
}, {
    scope: 'email',
    return_scopes: true
});

Die Antwort kommt zurück als verbunden , wenn der Benutzer erfolgreich anmeldet, und ich erhalte die Benutzer - ID des Benutzers, Zugriffstoken, etc., aber wenn sie in meiner UI auf die Schaltfläche klicken , dass Anrufe FB.login, die modal, das erscheint für Facebook tut nicht fragen den Benutzer , wenn sie Zugriff auf ihre E - Mail - Adresse erteilen möchten. Warum?

Für die Seite, die ich baue, ich brauche Zugriff auf die Adresse Facebook E-Mail des Benutzers. Wenn sie gefragt werden und der Zugang zu verweigern, das ist eine Sache, aber die modal, das erscheint, ist nicht einmal für den Zugriff auf ihre E-Mail-Adresse gefragt, und ich habe nicht die E-Mail-Adresse zurück in der Antwort.

Außerdem, wenn ich einen nachfolgenden Aufruf der folgenden machen, das emailkommt Erlaubnis zurück , wie declined:

FB.api(`/${response.authResponse.userID}/permissions`, (response) => {
    console.log(response);
});

Weiß jemand, warum kann ich nicht den Benutzer auffordern, für den Zugriff auf ihre E-Mail-Adresse? Vielen Dank.

Veröffentlicht am 13/02/2020 um 22:03
quelle vom benutzer
In anderen Sprachen...                            


1 antworten

stimmen
0

Nochmals vielen Dank für die Antwort auf misorude. Ohne das hätte ich nie diese herausgefunden. Um Summe alles, war das Problem, dass während der Prüfung hatte ich offenbar schon einmal die Anfrage abgelehnt Zugriff auf meine E-Mail-Adresse zur Verfügung zu stellen, und danach, es nicht hat mich gebeten, mehr für die Berechtigung zum Zugriff auf sie.

Als solche müssen Sie einen zusätzlichen Parameter zu übergeben FB.login, um sie zu zwingen , den Benutzer für den Zugriff auf ihre E - Mail - Adresse erneut zu fragen. Genauer gesagt, es ist der authTypeParameter, und hier ist , wie Sie es passieren:

FB.login((response) => {
    if (response.status === 'connected' &&
        response.authResponse) {
        // Do something with the response here.
    }
}, {
    scope: 'email',
    authType: 'rerequest'
});

Das gibt Ihnen die E - Mail - Adresse zugreifen (ein Benutzer unter der Annahme hat man registriert, wieder dank misorude für Feststellung , dass), aber es nicht wirklich die E - Mail - Adresse zurück. Um zu erreichen , müssen Sie dann eine API - Anforderung senden , /memit einem fieldsParameter , der die E - Mail - Adresse aufgefordert wird , zu erhalten. Ich habe herausgefunden, wie das über die folgende SO Antwort zu erhalten: https://stackoverflow.com/a/31763373/1992973

Insbesondere ist eine vollständige Lösung etwa wie folgt:

FB.login((response) => {
    if (response.status === 'connected' &&
        response.authResponse) {
        FB.api('/me?fields=email', (response) => {
            // The email should be in the response, assuming the user has one registered with FB.
        });
    }
}, {
    scope: 'email',
    authType: 'rerequest'
});
Beantwortet am 14/02/2020 um 14:45
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more