Pregunta

¡Estoy buscando la respuesta desde el comienzo del día y todavía no sé qué hacer! Para explicar el problema: Mi aplicación usa la API de GTasks. Para hacer esto, el usuario DEBE tener una cuenta de Google. Tengo dos formas de comprobarlo:

  1. Genero una instancia de un administrador de cuentas y busco cuentas "com.google" si no existen tales cuentas
  2. Lanzo una vista web en la que el usuario inicia sesión en Google y acepta usar la API.

Luego, tengo que sincronizar mi aplicación con GTask. A partir de la información extraída de la vista web, intenté crear una cuenta "com.google" utilizando AccountManager, pero siempre aparece el error "El UID de la persona que llama es diferente ...". Sé que el problema debería provenir de "account-authenticator" porque el "accountType" tiene que ser el mismo en el archivo XML y en la aplicación, pero creo que ese no es el caso porque cuando uso un tipo de cuenta diferente, funciona perfectamente (pero no puedo obtener un authToken de GTask).

Entonces, aquí está mi código:

Authenticator.xml:

<account-authenticator xmlns:android="http://schemas.android.com/apk/res/android"
    android:accountType="com.google"
    android:icon="@drawable/miniicon"
    android:smallIcon="@drawable/miniicon"
    android:label="@string/app_name"
    android:accountPreferences="@xml/preferences"
 />

Definición del tipo de cuenta:

 public class AuthenticationService extends Service {
     public static final String ACCOUNT_TYPE = "com.google";

Cómo lo uso en mi clase:

 AccountManager manager = AccountManager.get(activity);

 final Account account = new Account(login, AuthenticationService.ACCOUNT_TYPE);
 manager.addAccountExplicitly(account, password, new Bundle());

Cuando uso "com.plop" o cualquier otra cosa en lugar de "com.google", funciona muy bien.

Entonces, mis dos preguntas son: 1. ¿Puedo utilizar el tipo de cuenta "com.google"? 2. ¿Es normal que no pueda obtener mi authToken usando algo más que "com.google" (sabiendo que la cuenta utilizada sigue siendo una cuenta de Google, simplemente no está configurada así en Android)?

Gracias de antemano por su ayuda y, por favor, ¡perdóneme si la respuesta estaba en el sitio!

¿Fue útil?

Solución

Respondí a mi propia pregunta: no es posible de la manera que yo quería.Tienes que utilizar la función "addAccount" utilizando un tipo de cuenta "com.google".Esto dará como resultado la aparición de la actividad de creación de cuenta utilizada por el sistema Android.Entonces, todo está bien con GTasks API.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top