¿Por qué PHP no guarda sesiones cuando se usa la API PHP de Instagram?
Pregunta
Estoy tratando de crear una aplicación de Instagram usando la biblioteca PHP que está aquí (no es un archivo muy largo, no se preocupe):
Estoy tratando de autorizar al usuario usando OAuth, que funciona perfectamente, y el autorizado (usuario actual) puede ver su información (como imagen, nombre, etc.), pero cuando actualizo la página, todo va y yo '' me queda con datos en blanco, aquí está el código -
// Instantiate the API handler object
$instagram = new Instagram($config);
$accessToken = $instagram->getAccessToken();
$_SESSION['InstagramAccessToken'] = $accessToken;
$instagram->setAccessToken($_SESSION['InstagramAccessToken']);
$userinfo = $instagram->getUser($_SESSION['InstagramAccessToken']);
// After getting the response, let's iterate the payload
$ures = json_decode($userinfo, true);
Este código funciona bien la primera vez, pero cuando actualiza la página, la información no se está recuperando, y eso solo podría significar una cosa, que la sesión o la cookie no se configuran correctamente y por eso el método GetUser no está recuperando la información,
$userinfo = $instagram->getUser($_SESSION['InstagramAccessToken']);
Por favor, ¿puedes arrojar algo de luz sobre este problema? ¡He estado intentando durante 4 horas?
Solución
En cada uno de sus solicitudes, sobrescribe los datos de sesión actuales con nada de esta línea:
$_SESSION['InstagramAccessToken'] = $accessToken;
Lo más probable es que así sea:
$instagram = new Instagram($config);
if (!empty($_SESSION['InstagramAccessToken'])) {
$accessToken = $instagram->getAccessToken();
$_SESSION['InstagramAccessToken'] = $accessToken;
} else {
$instagram->setAccessToken($_SESSION['InstagramAccessToken']);
}
$userinfo = $instagram->getUser($_SESSION['InstagramAccessToken']);
// After getting the response, let's iterate the payload
$ures = json_decode($userinfo, true);