Γιατί η σύνδεση του τρόπου εκτέλεσης του Facebook δεν προτρέπει τους χρήστες για την πρόσβαση στη διεύθυνση ηλεκτρονικού ταχυδρομείου τους;

ψήφοι
0

Προσπαθώ να ενσωματώσει τη ροή είσοδο του Facebook σε μια ιστοσελίδα, και είμαι έχοντας προβλήματα με την προσπάθεια να αναγκάσει την τροπική σύνδεσης για την πρόσβαση αίτηση στο Facebook διεύθυνση ηλεκτρονικού ταχυδρομείου του χρήστη.

Συγκεκριμένα, είμαι εκτέλεση του παρακάτω κώδικα από JS μου:

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

Η απάντηση έρχεται πίσω ως συνδεδεμένη όταν ο χρήστης συνδέεται με επιτυχία, και έχω πάρει το όνομα χρήστη του χρήστη, διακριτικό πρόσβασης, κλπ, αλλά όταν κάνετε κλικ στο κουμπί στο UI μου ότι κλήσεων FB.login, η τροπική που αναδύεται για το Facebook κάνει δεν ζητήσει από το χρήστη αν θέλει να επιτρέψει την πρόσβαση στη διεύθυνση ηλεκτρονικού ταχυδρομείου τους. Γιατί;

Για την ιστοσελίδα Χτίζω, θα πρέπει να έχουν πρόσβαση στο Facebook διεύθυνση ηλεκτρονικού ταχυδρομείου του χρήστη. Αν ήταν να ζητηθεί και να αρνηθεί την πρόσβαση, που είναι ένα πράγμα, αλλά η τροπική που αναδύεται δεν έχει ακόμα ζητώντας τους για πρόσβαση στη διεύθυνση ηλεκτρονικού ταχυδρομείου τους, και δεν έχω διεύθυνση ηλεκτρονικού ταχυδρομείου πλάτη τους στην απόκριση.

Επιπλέον, αν κάνω μια μεταγενέστερη κλήση στο εξής, η emailάδεια επιστρέφει ως declined:

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

Ξέρει κανείς γιατί δεν μπορεί να ζητήσει από το χρήστη για την πρόσβαση στη διεύθυνση ηλεκτρονικού ταχυδρομείου τους; Ευχαριστώ.

Δημοσιεύθηκε 14/02/2020 στις 00:03
πηγή χρήστη
Σε άλλες γλώσσες...                            


1 απαντήσεις

ψήφοι
0

Ευχαριστώ και πάλι για να misorude για την απάντηση. Χωρίς αυτό, θα είχα ποτέ δεν κατάλαβα αυτό έξω. Για ποσό τα πάντα, το πρόβλημα ήταν ότι κατά τη διάρκεια της δοκιμής, είχα προφανώς ήδη μία φορά αρνήθηκε το αίτημα για την παροχή πρόσβασης στη διεύθυνση ηλεκτρονικού ταχυδρομείου μου, και μετά από αυτό, με ρώτησε πλέον την άδεια για να έχετε πρόσβαση σε αυτές.

Ως εκ τούτου, θα πρέπει να περάσει μια επιπλέον παράμετρο για να FB.loginγια να το αναγκάσει να επανεξετάσει ζητήσει από το χρήστη για την πρόσβαση στη διεύθυνση ηλεκτρονικού ταχυδρομείου τους. Συγκεκριμένα, είναι η authTypeπαράμετρος, και εδώ είναι το πώς μπορείτε να δώσετε:

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

Αυτό θα σας δώσει πρόσβαση στη διεύθυνση ηλεκτρονικού ταχυδρομείου (υποθέτοντας ότι ένας χρήστης έχει ένα εγγεγραμμένο? Και πάλι, χάρη σε misorude για να σημειωθεί ότι), αλλά δεν επιστρέφει στην πραγματικότητα τη διεύθυνση ηλεκτρονικού ταχυδρομείου. Για να πάρετε αυτό, θα πρέπει στη συνέχεια να στείλετε ένα αίτημα API για /meμια fieldsπαράμετρο που ζητούν τη διεύθυνση ηλεκτρονικού ταχυδρομείου για να το αποκτήσουν. Έχω βρει τον τρόπο να πάρει ότι με την εξής απάντηση SO: https://stackoverflow.com/a/31763373/1992973

Συγκεκριμένα, μια πλήρης λύση είναι κάτι σαν το παρακάτω:

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'
});
Απαντήθηκε 14/02/2020 στις 16:45
πηγή χρήστη

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