2011-07-14 6 views
6

Estoy desarrollando una aplicación para Android, que tendrá un lado del servidor de tipo api. Y esta aplicación tendrá mecanismos de inicio de sesión de los usuarios. Quiero utilizar una cuenta de google/fb/twitter como información de inicio de sesión, ya que el objetivo de la aplicación es muy social.Usando la cuenta de Google como inicio de sesión ... ¿qué sigue?

Ya he leído sobre el uso de la cuenta de Google almacenada en el teléfono como verificación de usuario (Howto use Google Accounts as login). El problema es que no sé qué hacer entonces? Según entendí, el gerente de cuenta finalmente me dará una ficha. Entonces, ¿qué hago con eso? ¿Cómo informo al lado del servidor que el usuario inició sesión? Cómo guardo este token, ya que entendí que este token podría cambiar cuando se invalide después de un tiempo ...

Y otra cosa. ¿Qué hago cuando el usuario ingresa su cuenta G por primera vez? Quiero obtener su avatar de G y su nombre para mostrar, por ejemplo, y almacenarlos en el servidor, lo que le permite al usuario ahorrar un montón de clics. ¿Los envío de algún modo desde el teléfono o los obtengo de alguna manera del servidor?

También pueden surgir las mismas preguntas para FB más tarde.

Esperanza hice mi pregunta correctamente, ya que es un poco cuestión más general ...

TIA.

Respuesta

1

Google usa OpenId mientras que FB tiene su propio truco. Necesitará diferentes rutas de codificación para esos dos.

http://www.sozkan.com/blog/2010/09/24/very-quick-openid-integration-tutorial/

concedido - Esto se basa en las direcciones URL para gestionar los datos - que necesita para terminar con esto en su código si lo quieres todo suceda internamente. Una vez que tenga el token puede notificar a su código de servidor de lo que es, vida útil, etc. Información

en las diferencias: http://thenextweb.com/socialmedia/2010/11/04/facebook-connect-oauth-and-openid-the-differences-and-the-future/

+0

La pregunta era exactamente cuál es el procedimiento para una aplicación cliente-servidor. Para una aplicación basada en la web, esta pregunta no persiste, ya que el único trabajo se realiza en un solo lugar. Aquí hay otra situación: el usuario está autenticado en el CLIENTE, y el SERVIDOR todavía no lo sabe. Entonces, ¿cómo le notifico que el usuario está autenticado con credenciales en particular y cómo verificar todo esto, y así sucesivamente? – Djumaka

+0

Se autenticará a través del CLIENTE y notificará al SERVIDOR una vez que obtenga el visto bueno - O bien, lo haría al revés: haga que el cliente le indique al servidor que se autentique y luego envíe el resultado de vuelta al cliente. La mayoría de los lenguajes de servidor (PHP, JAVA, Perl, etc.) admiten algún tipo de comunicación web (por ejemplo, Curl), por lo que esa es una vía para la autenticación. Google también podría ofrecer una avenida SOAP también. – ethrbunny

+0

Votaron porque HTTP-ing los URL usted mismo, a mano, replica el comportamiento de AccountManager, Y descarta la lista existente de cuentas iniciadas de Android. – Phlip

2

Creo this question cubre exactamente lo que estás pidiendo.

Para mí, la mejor solución se cubrió en la publicación del blog this. Solo funcionará con cuentas de Google, y supone que está utilizando UserService en el lado de App Engine, pero creo que funciona bien. Espero que ayude.

0

sólo para terminar esta pregunta (rancio), y aparcar el fragmento de código en algún lugar, me he puesto a iniciar sesión con Google a través de una actividad de PreferenceScreen con este onCreate() código:

ArrayList<String> list = new ArrayList<String>(); 
    list.add("https://www.googleapis.com/auth/userinfo.profile"); 
    final GoogleAccountCredential credential = 
     GoogleAccountCredential.usingOAuth2(getApplicationContext(), list); 
    Preference acctValue = findPreference("GMail"); // A <Preference> in the XML... 

    acctValue.setOnPreferenceClickListener(new OnPreferenceClickListener(){ 
     @Override 
     public boolean onPreferenceClick(Preference preference) { 
      startActivityForResult(credential.newChooseAccountIntent(), 1); 
      return false; 
     } 
    }); 

Y se requiere la adición de estos sombra caracteres a mi carpeta libs:

google-api-client-android-1.17.0-rc.jar 
google-play-services.jar 
google-api-client-1.17.0-rc.jar 
google-http-client-1.17.0-rc.jar 
Cuestiones relacionadas