TigerZF
🌐Español

37.5. Autenticación con ClientLogin

El mecanismo ClientLogin le permite escribir aplicaciones PHP que adquieren acceso autenticado a los servicios de Google, especificando las credenciales de un usuario en el cliente HTTP.

Consulte http://code.google.com/apis/accounts/AuthForInstalledApps.html para más información sobre la autenticación ClientLogin de Google Data.

La documentación de Google indica que el mecanismo ClientLogin es apropiado para "aplicaciones instaladas", mientras que el mecanismo AuthSub es para "aplicaciones web". La diferencia es que AuthSub requiere interacción del usuario, y una interfaz de navegador que pueda reaccionar a las peticiones de redirección. La solución ClientLogin usa código PHP para proporcionar las credenciales de la cuenta; no se requiere que el usuario introduzca sus credenciales de forma interactiva.

Las credenciales de cuenta proporcionadas mediante el mecanismo ClientLogin deben ser credenciales válidas para los servicios de Google, pero no es necesario que sean las del usuario que está usando la aplicación PHP.

37.5.1. Creación de un cliente Http autenticado con ClientLogin

El proceso de creación de un cliente HTTP autenticado usando el mecanismo ClientLogin consiste en llamar a la función estática Zend_Gdata_ClientLogin::getHttpClient() y pasar las credenciales de la cuenta de Google en texto plano. El valor de retorno de esta función es un objeto de la clase Zend_Http_Client.

El tercer parámetro opcional es el nombre del servicio de Google Data. Por ejemplo, este puede ser 'cl' para Google Calendar. El valor predeterminado es "xapi", que los servidores de Google Data reconocen como un nombre de servicio genérico.

El cuarto parámetro opcional es una instancia de Zend_Http_Client. Esto le permite establecer opciones en el cliente, como la configuración del servidor proxy. Si pasa NULL para este parámetro, se crea un objeto Zend_Http_Client genérico.

El quinto parámetro opcional es una cadena corta que los servidores de Google Data usan para identificar la aplicación cliente con fines de registro. Por defecto esta es la cadena "Zend-ZendFramework";

El sexto parámetro opcional es una cadena de ID para un desafío CAPTCHA™ que ha sido emitido por el servidor. Solo es necesario al iniciar sesión después de recibir un desafío CAPTCHA™ de un intento de inicio de sesión anterior.

El séptimo parámetro opcional es la respuesta de un usuario a un desafío CAPTCHA™ que ha sido emitido por el servidor. Solo es necesario al iniciar sesión después de recibir un desafío CAPTCHA™ de un intento de inicio de sesión anterior.

A continuación se muestra un ejemplo de código PHP para una aplicación web que adquiere autenticación para usar el servicio Google Calendar y crea un objeto cliente Zend_Gdata usando ese Zend_Http_Client autenticado.

// Enter your Google account credentials
$email = 'johndoe@gmail.com';
$passwd = 'xxxxxxxx';
try {
   $client = Zend_Gdata_ClientLogin::getHttpClient($email, $passwd, 'cl');
} catch (Zend_Gdata_App_CaptchaRequiredException $cre) {
    echo 'URL of CAPTCHA image: ' . $cre->getCaptchaUrl() . "\n";
    echo 'Token ID: ' . $cre->getCaptchaToken() . "\n";
} catch (Zend_Gdata_App_AuthException $ae) {
   echo 'Problem authenticating: ' . $ae->exception() . "\n";
}

$cal = new Zend_Gdata_Calendar($client);

37.5.2. Finalización de un cliente Http autenticado con ClientLogin

No hay ningún método para revocar la autenticación ClientLogin como lo hay en la solución basada en tokens de AuthSub. Las credenciales usadas en la autenticación ClientLogin son el login y la contraseña de una cuenta de Google, y por lo tanto pueden usarse repetidamente en el futuro.