¿Puedo almacenar Facebook token de acceso y utilizarlo más adelante?
-
25-09-2019 - |
Pregunta
Estoy construyendo una aplicación web (PHP) que utiliza FB Connect. Me registro con éxito / signo de usuario con la ayuda de la lib PHP proporcionada por facebook. También me pueden enviar a la pared, utilizando el código
Facebook::$CURL_OPTS[CURLOPT_SSL_VERIFYPEER] = false;
Facebook::$CURL_OPTS[CURLOPT_SSL_VERIFYHOST] = 2;
$facebook = new Facebook(array(
'appId' => $fb_key,
'secret' => $fb_secret,
'cookie' => true, // enable optional cookie support
));
$session = $facebook->getSession();
if ($session)
{
$facebook->api('/me/feed', 'POST', array('message'=>$message, 'link'=>$link['href'], 'name'=>$link['text']));
}
Sin embargo, si voy manualmente a administrador de cookies de mi navegador y borrar la cookie que almacena sesión de FB, el código no funciona. Lo único que tengo es de FB de usuario de ID que almaceno en el PP. ¿Hay alguna manera de publicar en el muro de usuario, incluso si se pierde sesiones FB? ¿Tiene sentido para el acceso FB tienda de token de usuario en el PP para colocar en la pared posterior o el token de acceso relativamente corta vida?
Aquí hay una situación de ejemplo que podría suceder en mi aplicación: botón usuario hace clic en fb, autoriza mi aplicación, se le redirecciona de nuevo a mi sitio donde se crea automáticamente una cuenta en base a datos proporcionados por FB, también del usuario del almacén I FB ID para que pudiera acceder a este usuario para más tarde. Ahora navega sitio, entra algo de información y esta información se ha publicado en su muro. Todo está bien hasta ahora porque el navegador del usuario mantiene la cookie creado por FB. Ahora el usuario deja el sitio y sitio de administración de contactos. Administrador abre su propio navegador, va a la interfaz y los mensajes de administración algo en nombre de este usuario. Ahora, teniendo de ese usuario FB ID y asumiendo que el usuario no ha revocado los permisos, puede todavía publicar esto en su pared?
Otros consejos
Con la versión 3 del SDK de Facebook PHP ( ver en github ), es bastante simple para preguntar y utilizar un acceso de usuarios en línea token. Así es cómo se hace eso.
Obtener el token de acceso fuera de línea
En primer lugar, comprobar si el usuario está conectado o no:
require "facebook.php";
$facebook = new Facebook(array(
'appId' => YOUR_APP_ID,
'secret' => YOUR_APP_SECRET,
));
$user = $facebook->getUser();
if ($user) {
try {
$user_profile = $facebook->api('/me');
} catch (FacebookApiException $e) {
$user = null;
}
}
Si no lo es, se genera la URL "Entrar con Facebook" pidiendo permiso offline_access
:
if (!$user) {
$args['scope'] = 'offline_access';
$loginUrl = $facebook->getLoginUrl($args);
}
Y a continuación, mostrar el enlace en su plantilla:
<?php if (!$user): ?>
<a href="<?php echo $loginUrl ?>">Login with Facebook</a>
<?php endif ?>
A continuación, cuando el usuario está conectado, puede recuperar el token de acceso fuera de línea y almacenarla. Para conseguirlo, llamada:
if ($user) {
$token = $facebook->getAccessToken();
// store token
}
Uso del token de acceso fuera de línea
Para usar el token de acceso fuera de línea cuando el usuario no se registra en:
require "facebook.php";
$facebook = new Facebook(array(
'appId' => YOUR_APP_ID,
'secret' => YOUR_APP_SECRET,
));
$facebook->setAccessToken("...");
Y ahora usted puede hacer llamadas a la API para este usuario:
$user_profile = $facebook->api('/me');
Espero que ayude!