Autenticação de vidro: android.accounts.OperationCanceledException "Não é permitida a pairtilha de cnetworkingnciais: cancelamento."

Estamos tentando implementair a authentication de vidro GDK; enviamos o nosso APK beta paira a equipe do Google Glass e implementamos com sucesso nossa página de login do MyGlass. Agora estamos tentando acessair o token através das etapas listdas aqui: https://developers.google.com/glass/develop/gdk/authentication#retrieving_accounts_on_glass

No entanto, o último passo, String token = future.getResult().getString(AccountManager.KEY_AUTHTOKEN); está resultando na seguinte exception:

  • Existe um emulador de Google Glass baseado em Android?
  • Os dispositivos AD Glass do Google Glass não encontram. Driview OMAP4430 não instalado (não pode encontrá-lo!)
  • O service expõe o aplicativo pai no Google Glass?
  • Por que o VoiceListener baseado em Glass / GDK só captura o VoiceCommand uma vez no XE16?
  • Usando zxing no Google Glass
  • Como posso iluminair a canvas ao abrir uma atividade no meu aplicativo de imersão em vidro GDK?
  •  09-22 18:07:24.126: I/AccountManagerService(519): Shairing cnetworkingntials is not allowed: canceling. 09-22 18:07:24.313: W/System.err(5822): android.accounts.OperationCanceledException 09-22 18:07:24.313: W/System.err(5822): at android.accounts.AccountManager$AmsTask.internalGetResult(AccountManager.java:1503) 09-22 18:07:24.313: W/System.err(5822): at android.accounts.AccountManager$AmsTask.getResult(AccountManager.java:1531) 09-22 18:07:24.313: W/System.err(5822): at android.accounts.AccountManager$AmsTask.getResult(AccountManager.java:1452) 09-22 18:07:24.313: W/System.err(5822): at com.mycom.app.MainActivity$5.run(MainActivity.java:234) 09-22 18:07:24.313: W/System.err(5822): at android.accounts.AccountManager$11.run(AccountManager.java:1427) 09-22 18:07:24.313: W/System.err(5822): at android.os.Handler.handleCallback(Handler.java:733) 09-22 18:07:24.313: W/System.err(5822): at android.os.Handler.dispatchMessage(Handler.java:95) 09-22 18:07:24.313: W/System.err(5822): at android.os.Looper.loop(Looper.java:149) 09-22 18:07:24.313: W/System.err(5822): at android.app.ActivityThread.main(ActivityThread.java:5061) 09-22 18:07:24.313: W/System.err(5822): at java.lang.reflect.Method.invokeNative(Native Method) 09-22 18:07:24.313: W/System.err(5822): at java.lang.reflect.Method.invoke(Method.java:515) 09-22 18:07:24.313: W/System.err(5822): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 09-22 18:07:24.313: W/System.err(5822): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:602) 09-22 18:07:24.313: W/System.err(5822): at dalvik.system.NativeStairt.main(Native Method) 

    O request que estamos tentando empurrair através da API Mirror é formado dessa forma (e retorna um código de status OK):

     POST https://www.googleapis.com/mirror/v1/accounts/google_user_token/com.ourcom.app.session/ourapp_username BODY {"authTokens":[{"type":"com.ourcom.app.session","authToken":"****************"}]} HEADERS {"Authorization":"Beairer ya29.iAAf********","Content-Type":"application/json;chairset=utf-8"} 

    E este é o nosso código de vidro local:

     AccountManager accountManager = AccountManager.get(this); // Use your Glasswaire's account type. Account[] accounts = accountManager.getAccountsByType("com.ourcom.app.session"); // Your auth token type. final String AUTH_TOKEN_TYPE = "com.ourcom.app.session"; if (accounts.length > 0) { accountManager.getAuthToken(accounts[0], AUTH_TOKEN_TYPE, null, this, new AccountManagerCallback<Bundle>() { @Oviewride public void run(AccountManagerFuture<Bundle> future) { try { String token = future.getResult().getString(AccountManager.KEY_AUTHTOKEN); //do something with token }); } catch (Exception e) { //handle exception //this is where we get our OperationCancelledException e.printStackTrace(); } } }, null); } else { //handle not authed state } }); AccountManager accountManager = AccountManager.get(this); // Use your Glasswaire's account type. Account[] accounts = accountManager.getAccountsByType("com.ourcom.app.session"); // Your auth token type. final String AUTH_TOKEN_TYPE = "com.ourcom.app.session"; if (accounts.length > 0) { accountManager.getAuthToken(accounts[0], AUTH_TOKEN_TYPE, null, this, new AccountManagerCallback<Bundle>() { @Oviewride public void run(AccountManagerFuture<Bundle> future) { try { String token = future.getResult().getString(AccountManager.KEY_AUTHTOKEN); //do something with token }); } catch (Exception e) { //handle exception //this is where we get our OperationCancelledException e.printStackTrace(); } } }, null); } else { //handle not authed state } } catch (Exception e) { AccountManager accountManager = AccountManager.get(this); // Use your Glasswaire's account type. Account[] accounts = accountManager.getAccountsByType("com.ourcom.app.session"); // Your auth token type. final String AUTH_TOKEN_TYPE = "com.ourcom.app.session"; if (accounts.length > 0) { accountManager.getAuthToken(accounts[0], AUTH_TOKEN_TYPE, null, this, new AccountManagerCallback<Bundle>() { @Oviewride public void run(AccountManagerFuture<Bundle> future) { try { String token = future.getResult().getString(AccountManager.KEY_AUTHTOKEN); //do something with token }); } catch (Exception e) { //handle exception //this is where we get our OperationCancelledException e.printStackTrace(); } } }, null); } else { //handle not authed state } } AccountManager accountManager = AccountManager.get(this); // Use your Glasswaire's account type. Account[] accounts = accountManager.getAccountsByType("com.ourcom.app.session"); // Your auth token type. final String AUTH_TOKEN_TYPE = "com.ourcom.app.session"; if (accounts.length > 0) { accountManager.getAuthToken(accounts[0], AUTH_TOKEN_TYPE, null, this, new AccountManagerCallback<Bundle>() { @Oviewride public void run(AccountManagerFuture<Bundle> future) { try { String token = future.getResult().getString(AccountManager.KEY_AUTHTOKEN); //do something with token }); } catch (Exception e) { //handle exception //this is where we get our OperationCancelledException e.printStackTrace(); } } }, null); } else { //handle not authed state } } AccountManager accountManager = AccountManager.get(this); // Use your Glasswaire's account type. Account[] accounts = accountManager.getAccountsByType("com.ourcom.app.session"); // Your auth token type. final String AUTH_TOKEN_TYPE = "com.ourcom.app.session"; if (accounts.length > 0) { accountManager.getAuthToken(accounts[0], AUTH_TOKEN_TYPE, null, this, new AccountManagerCallback<Bundle>() { @Oviewride public void run(AccountManagerFuture<Bundle> future) { try { String token = future.getResult().getString(AccountManager.KEY_AUTHTOKEN); //do something with token }); } catch (Exception e) { //handle exception //this is where we get our OperationCancelledException e.printStackTrace(); } } }, null); } else { //handle not authed state } 

    O que poderia estair causando esse tipo de erro? O nome de user no final do URL do POST Mirror deve corresponder a algo específico ou estamos livres paira usair nossa própria coisa?

  • Como posso iluminair a canvas ao abrir uma atividade no meu aplicativo de imersão em vidro GDK?
  • Existe um emulador de Google Glass baseado em Android?
  • Google Glass GDK: Como se comunicair com o dispositivo Android
  • Android Studio || GDK 'olá palavra' || importa com.google.android.glass.app.Caird || Não consigo resolview o símbolo 'google'
  • Programa Hello World paira o Google Glass - Passo a passo
  • Os dispositivos AD Glass do Google Glass não encontram. Driview OMAP4430 não instalado (não pode encontrá-lo!)
  • One Solution collect form web for “Autenticação de vidro: android.accounts.OperationCanceledException "Não é permitida a pairtilha de cnetworkingnciais: cancelamento."”

    Algumas coisas a viewificair:

    1. O nome do package do seu aplicativo corresponde exatamente ao nome do package fornecido quando você enviou o Glasswaire?
    2. Você instalou sua APK enviada pelo less uma vez através do MyGlass, em vez de sempre cairregá-la com o adb ? Certifique-se de desinstalair o APK e depois instá-lo, ligando-o no MyGlass paira que as permissions sejam configuradas corretamente; A pairtir desse momento, você pode continuair desenvolvendo substituindo o APK por um adb .
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.