He leído la documentación, ejemplos y tutoriales sobre cómo usar la API de Google, tengo una mini aplicación que ya muestra tus actividades e información más recientes, pero usa sesiones para almacenar el token.Google+ OAuth API almacenar y recuperar tokens después del primer inicio de sesión y autorización
Mi pregunta es, ¿cómo puedo almacenar y recuperar el token de la base de datos para que cuando un usuario (que ya se ha registrado) haga clic en "iniciar sesión", pueda usar la API de inmediato sin una autorización repetida? Tenga en cuenta que utilicé el ejemplo como punto de partida para mi mini aplicación.
He aquí un fragmento de código:
$client = new apiClient();
$client->setApplicationName(APP_NAME);
$client->setClientId(CLIENT_ID);
$client->setClientSecret(CLIENT_SECRET);
$client->setRedirectUri(REDIRECT_URL);
$client->setDeveloperKey(DEV_KEY);
$plus = new apiPlusService($client);
$google_userinfo = new apiOauth2Service($client);
$message = "";
// In a real application this would be stored in a database, and not in the session!
if (isset($_SESSION['token']))
$client->setAccessToken($_SESSION['token']);
$_SESSION['token'] = $client->getAccessToken();
if (isset($_GET['code'])) {
$client->authenticate();
// In a real application this would be stored in a database, and not in the session!
$_SESSION['token'] = $client->getAccessToken();
header('Location: http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF']);
}
...
//Somewhere here, I added a function that ties $_SESSION['token'] to the user's info.
...
<form action="" method="post" id="form1" name="form1">
<fieldset>
<div id="main-url-section" style="width: 50%;margin: 0px auto;text-align: center;">
<?php
$authUrl = $client->createAuthUrl();
print "<p><a class='login' href='$authUrl'>Log me in!</a></p>";
?>
</div>
</fieldset>
</form>
Muchas gracias por la ayuda!
Saludos,
John
Gracias por esta respuesta! Esto es útil y puedo usarlo como solución temporal. :) Ya lo he comprobado. ¿Pero conoces o tienes un enlace a cualquier publicación sobre cómo almacenar los tokens que obtengo en $ client-> getAccessToken()? y usarlos cuando el usuario inicia sesión? – user1239714
@ user1239714: No conozco un lugar específico para vincularlo aquí. Depende completamente de cómo persista el resto de los datos en su aplicación. Por ejemplo, si está escribiendo una aplicación LAMP típica, puede tener sentido almacenar el token de actualización en MySql para recuperarlo más tarde. – mimming
@JennyMurphy "Puedes ver esto en el código fuente". El enlace está roto. ¿Podría proporcionar otra muestra? – knightrider