1

Ich versuche Google rest api für Drive V3 in Android zu implementieren.Wie AccountManager weiß, welches Google-Konto verwendet werden soll?

Aber ich bin immer authError

{ 
    "error":{ 
     "errors":[ 
     { 
      "domain":"global", 
      "reason":"authError", 
      "message":"Invalid Credentials", 
      "locationType":"header", 
      "location":"Authorization" 
     } 
     ], 
     "code":401, 
     "message":"Invalid Credentials" 
    } 
} 

I AccountManager verwenden von Benutzer-Token zu bekommen, und ich denke, es ist das falsche Konto-Konsole zuzugreifen.
Woher weiß es, auf welches Konto zugegriffen werden soll?

Dies ist mein AccountManager-Code, ich erhalte erfolgreich Benutzer-Token. Auch entkräften ich es vorher mit AccountManager.invalidateAuthToken

Bundle options = new Bundle(); 
    options.putString(AccountManager.KEY_ANDROID_PACKAGE_NAME, context.getPackageName()); 
    accountManager.getAuthToken(account, scope, options, context, 
      callback, null); 

Antwort

0

sich nach den Account Manager docs für [getAuthToken] (http://developer.android.com/reference/android/accounts/AccountManager.html#getAuthToken(android.accounts.Account, java.lang.String, android.os.Bundle, android.app.Activity, android.accounts.AccountManagerCallback, android.os.Handler)):

Ruft eine auth-Token des angegebenen Typs für ein bestimmtes Konto, die Benutzer für Anmeldeinformationen bei Bedarf auffordert. Diese Methode ist für Anwendungen im Vordergrund gedacht, bei denen es sinnvoll ist, den Benutzer direkt nach einem Passwort zu fragen.

Wenn ein zuvor generiertes Authentifizierungs-Token für dieses Konto und diesen Typ zwischengespeichert wird, wird zurückgegeben. Andernfalls, Wenn ein gespeichertes Kennwort verfügbar ist, wird es an den Server gesendet, um ein neues Authentifizierungs-Token zu generieren. Andernfalls wird der Benutzer aufgefordert, ein Passwort einzugeben.

Es scheint, dass es auf den Wert Ihrer account Variable abhängen, die Sie im getAuthToken() vorbei sind.

Sie haben wahrscheinlich bereits dieses in, aber werde, die in für die Gemeinschaft, haben Sie umfassen die USE_CREDENTIALS Erlaubnis wie in der Dokumentation erwähnt:

HINWEIS: Wenn Ihre App-Targeting auf API-Ebene zu arbeiten, 22 und vorher, USE_CREDENTIALS Erlaubnis wird für diese Plattformen benötigt.

Hoffe das hilft. Viel Glück. :)

+0

Wir sprechen über Google-Konto hier. Es sollte natürlich für alle Projekte gleich sein. Es ist die Projektnummer, nach der ich gesucht habe. Ich glaube nicht, dass ich bei der richtigen angemeldet war. –

+0

Entschuldigung. Ich bin verwirrt. In deinem Beitrag hast du gefragt, auf welchen AccountManager'' welches Konto zugreifen soll, zu dem ich die passende Antwort geliefert habe. Können Sie mehr ausarbeiten? Testen Sie die Drive API mit einem Gerät, das mit mehreren Google-Konten synchronisiert ist? –