Una volta che ho l'access_token, come faccio a ottenere il lato server user_id associato?
-
23-10-2019 - |
Domanda
So che posso chiedere:
https://graph.facebook.com/me?access_token=ACCESS_TOKEN
Ma 'me' che si riferisce alla 'utente attivo', che è presumibilmente l'utente connesso con i tuoi amici su questa macchina che sarebbe il server, ho bisogno che l'utente facebook ai clienti finali ID_utente modo mio server può fare richieste a la GraphAPI per quel utente utilizzando il formato:
https://graph.facebook.com/USER_ID?access_token=ACCESS_TOKEN
Soluzione 2
Guardando il codice sorgente del SDK ho trovato che analizzare l'user_id dal token di accesso:
/*
* access_token:
* 1249203702|2.h1MTNeLqcLqw__.86400.129394400-605430316|-WE1iH_CV-afTgyhDPc
* |_______|
* |
* user id
*/
MA un dovreste avere a che fare questo come invece di richiedere il token vostra applicazione loro dovrebbe reindirizzare alla pagina di destinazione a seguito della quale si ri facebook POST la signed_request con l'access_token e user_id. La documentazione facebook sull'autorizzazione (sembra da allora sono stati aggiornati) quelli a torto detto all'applicazione di richiedere simbolico, ma che è applicabile solo per i siti web non apps. Trovo fastidioso come la documentazione di Facebook continuano a raccontare uno come è semplice ma non riescono a spiegare in modo semplice e ottenere comunque sbagliato ...
Altri suggerimenti
Credo che si sta perdendo i fondamenti del concetto di utente di autenticazione, che non è solo legato a Facebook.
Supponiamo che due utenti A e B domain.com/fb_profile.php
visitato, che contiene ( esempio file dal PHP-SDK):
<?php
require '../src/facebook.php';
$facebook = new Facebook(array(
'appId' => 'APPLICATION_ID',
'secret' => 'APPLICATION_SECRET',
'cookie' => true,
));
$session = $facebook->getSession();
$me = null;
// Session based API call.
if ($session) {
try {
$uid = $facebook->getUser();
$me = $facebook->api('/me');
} catch (FacebookApiException $e) {
error_log($e);
}
}
// rest of code
Entrambi registrato con successo, e la pagina ricaricata. Quello che è successo ora è che abbiamo una sessione valida per sia utenti!
E quando il fb_profile.php
viene richiesta da parte dell'utente A ( client ) il $facebook->api('/me');
terrà i dettagli "utente attivo" da quella specifica richiesta (client) ! e la macchina ( server ) terrà le sessioni per tutti l'gli utenti registrati!
Così ogni fb_profile.php
volta che viene richiesto da un client con una sessione valida, il risultato dell'esecuzione $facebook->api('/me');
sarà collegato a quello specifica sessione da che specifica cliente!
Quindi, che cosa hai detto qui (in grassetto ) è sbagliato:
Ma 'me' che si riferisce alla 'attiva utente' che presumibilmente è l'utente effettuato l'accesso a Facebook su questa macchina che sarebbe il server
E, a proposito, quando si dispone di una sessione valida sia:
$facebook->api('/me');
E
$facebook->api('/USER_ID');
restituirà lo stesso info (, naturalmente, la USER_ID
è l'ID dell'utente connesso sul lato client ).