8

Stiamo provando ad implementare l'autenticazione glassware GDK; abbiamo caricato il nostro APK beta per il team di Google Glass e implementato con successo la nostra pagina di accesso MyGlass. Ora stiamo cercando di accedere token tramite la procedura riportata qui: https://developers.google.com/glass/develop/gdk/authentication#retrieving_accounts_on_glassGlassware auth: android.accounts.OperationCanceledException "La condivisione delle credenziali non è consentita: cancellazione."

Tuttavia l'ultimo passo, String token = future.getResult().getString(AccountManager.KEY_AUTHTOKEN); si traduce nella seguente eccezione:

09-22 18:07:24.126: I/AccountManagerService(519): Sharing credentials 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.NativeStart.main(Native Method) 

La richiesta che stiamo cercando di spingere via specchio API è formata come questo (e restituisce un codice di stato 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":"Bearer ya29.iAAf********","Content-Type":"application/json;charset=utf-8"} 

e questo è il nostro codice vetro locale:

AccountManager accountManager = AccountManager.get(this); 
// Use your Glassware'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>() { 

     @Override 
     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 
} 

Che cosa potrebbe causare questo tipo di errore? Il nome utente alla fine dell'URL POST Mirror dovrebbe corrispondere a qualcosa di specifico o siamo liberi di usare la nostra cosa?

risposta

1

Un paio di cose da controllare:

  1. Fa il nome del pacchetto della tua partita dell'applicazione esattamente il nome del pacchetto fornito quando hai inviato la tua vetro?
  2. Avete installato l'APK inviato almeno una volta attraverso MyGlass, invece di caricarlo sempre lateralmente con adb? Assicurarsi di disinstallare l'APK e installarlo accedendo in MyGlass in modo che le autorizzazioni vengano impostate correttamente; da quel momento in poi, puoi continuare a sviluppare sostituendo l'APK su adb.
+0

Grazie per la risposta Tony: 1. si, anche se forse mi sono leggermente confuso, quindi devo solo ricontrollare: l'url Mirror è .../com.mycom.myapp.session/... , il tipo di token è com.mycom.myapp.session, il tipo di account è com.mycom.myapp.session, ma l'ID bundle è com.mycom.myapp. È tutto corretto? 2. sì, ho seguito i passaggi: 1. reset vetri di fabbrica, 2. installato su myglass accendendo l'app, 3. installato una nuova versione tramite ADB (firmata con lo stesso keystore) - sia la versione myglass che la nuova versione lancia l'eccezione di cui sopra. – Peter

+0

@Peter .. Sei in grado di risolvere il problema? Sto anche ricevendo la stessa eccezione qui. – Bharath

+1

@TaruniNeema abbiamo sollevato un problema con Google un paio di mesi fa e da allora sono stato in contatto semi-regolare con il supporto. Apparentemente stanno ancora esaminando il problema, il che mi fa pensare che sia un bug la loro fine. Per prima cosa proverei tutti i suggerimenti sopra, ma tornerò sicuramente anche qui quando (se?) Avremo una correzione da parte di G. – Peter