IMPORTANT: Per accedir als fitxer de subversion: http://acacha.org/svn (sense password). Poc a poc s'aniran migrant els enllaços. Encara però funciona el subversion de la farga però no se sap fins quan... (usuari: prova i la paraula de pas 123456)

Passos previs

Codi exemple

Es pot afegir al Layout un SignInButton [1]:

 <com.google.android.gms.common.SignInButton
    android:id="@+id/sign_in_button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />
TODO:  

Este botón será el que permita al usuario acceder a nuestra aplicación haciendo uso de su usuario de Google. Sin embargo, no será el botón el que desencadene el proceso de conexión a Google+, sino que actuaremos de una forma algo peculiar. Nuestra actividad intentará conectarse al servicio desde su inicio de forma que si el usuario ya estaba logueado con anterioridad el proceso de conexión se transparente para él. De forma análoga, justo al salir de la actividad nos desconectaremos del servicio.

Pero entonces, ¿para qué nos sirve el botón de login? Pues la clave del párrafo anterior está en las palabras “si el usuario ya estaba logueado con anterioridad“. Y no sólo eso, para que la conexión sea completamente transparente y no necesite ninguna intervención del usuario, éste debe estar ya logueado y además debe haber dado su permiso para que la aplicación acceda a sus datos de Google+ y pueda realizar determinadas acciones en su nombre. En el caso de que alguno de estos pasos no se hayan realizado ya, el intento de conexión realizado al inicio de la actividad derivará en un “error” que deberá ser tratado por el usuario. Y esto es precisamente lo que conseguirá el usuario al pulsar el botón de login colocado en la aplicación. Pero tampoco hay que preocuparse, porque la API de Google+ proporciona todos los elementos necesarios para que el usuario pueda resolver estas acciones, por ejemplo el diálogo de selección de la cuenta con la que se accederá a Google+, o el diálogo donde el usuario podrá seleccionar los permisos relacionados con Google+ que desea conceder a la aplicación (por ejemplo, la visibilidad de determinados círculos).

La connexió amb Google+ es gestiona amb la classe:

PlusClient

Per generar un objecte d'aquest tipus s'utilitza:

PlusClient.Builder()


NOTA: En esta inicialización indicaremos además las actividades (de “acciones”, no de “Activity”) del usuario en la aplicación que la propia aplicación podrá publicar en el perfil de Google+ en nombre del usuario (por ejemplo acciones del estilo a “He escuchado tal canción”, “He visto tal imagen” o “He comentado tal noticia”). Existen varios tipos de actividad predefinidas como BuyActivity, ListenActivity, CommentActivity para actividades de compras, reproducción de música o comentarios (podéis revisar la lista completa en esta página y un tipo genérico (AddActivity) para cuando las actividades que enviará nuestra aplicación a Google+ con encaja con ninguno de los tipos predefinidos.

La lista de actividades que la aplicación podrá enviar al perfil de Google+ del usuario se configurará mediante el método:

setVisibleActivities()

, y serán mostradas al usuario al loguearse por primera vez en la aplicación de forma que éste sea consciente de ello y pueda conceder su permiso. Más tarde pondré una captura de pantalla donde podrá verse esto claramente.

En nuestro caso añadiremos por ejemplo las actividades AddActivity y ListenActivity para ver el efecto. Además de esto, para terminar inicializaremos también un diálogo de progreso que utilizaremos más tarde. Veamos cómo queda el método onCreate() al completo:

@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
 
    btnSignIn = (SignInButton)findViewById(R.id.sign_in_button);
 
    plusClient = new PlusClient.Builder(this, this, this)
        .setVisibleActivities(
            "http://schemas.google.com/AddActivity",
            "http://schemas.google.com/ListenActivity")
        .build();
 
    connectionProgressDialog = new ProgressDialog(this);
    connectionProgressDialog.setMessage("Conectando...");
 
    //...
}

Vegeu també

Enllaços externs