2010-08-16 7 views
6

Ich versuche, das Google Data API für eine installierte Anwendung auf Android 2.1 zu verwenden. Ich möchte nicht, dass der Benutzer seine Anmeldeinformationen eingeben muss, wenn er bereits ein Konto auf dem Gerät konfiguriert hat. Daher verwende ich den AccountManager mit dem Kontotyp "com.google".Gibt es eine offizielle Möglichkeit zur Authentifizierung für Google Data API unter Android mit AccountManager-Konten?

Aber wohin von dort gehen? Es gibt keine Beispiele von Google zur Durchführung der Google-Authentifizierung (authTokenType usw.). Es gibt ein Projekt, das versucht, es (http://code.google.com/p/google-authenticator-for-android) in einem allgemeinen Weg, aber ohne Erfolg, noch zu tun.

Kann es so schwer sein? Dies hält wirklich Anwendungen wie Google Reader-Clients zurück, die den Benutzer nach seinen Google-Anmeldedaten fragen müssen (die hoffentlich niemand ihnen gibt).

Alle Hinweise/Ratschläge sind willkommen.

Antwort

1

Bitte werfen Sie einen Blick auf die sample code in der Google-Daten API. Nach der Authentifizierung sollten Sie GoogleHeaders.setGoogleLogin (String) aufrufen.

4

Ja, das ist möglich. Sobald Sie über das Google-Konto verfügen (wie Sie es beschrieben haben), müssen Sie nur ein Authentifizierungs-Token vom AccountManager für den GData-Service anfordern.

Wenn das Android-Gerät bereits über ein Authentifizierungs-Token verfügt (für den bestimmten GData-Dienst, auf den Sie zugreifen möchten), wird es an Sie zurückgegeben. Ist dies nicht der Fall, fordert der AccountManager einen an und sendet ihn an Sie zurück. In beiden Fällen müssen Sie sich darüber keine Gedanken machen, da der AccountManager sie handhabt.

Im folgenden Beispiel habe ich die Google Tabellen-API bin mit:

ArrayList<Account> googleAccounts = new ArrayList<Account>(); 

// Get all accounts 
Account[] accounts = accountManager.getAccounts(); 
    for(Account account : accounts) { 
    // Filter out the Google accounts 
    if(account.type.compareToIgnoreCase("com.google")) { 
     googleAccounts.add(account); 
    } 
    } 
AccountManager accountManager = AccountManager.get(activity); 

// Just for the example, I am using the first google account returned. 
Account account = googleAccounts.get(0); 

// "wise" = Google Spreadheets 
AccountManagerFuture<Bundle> amf = accountManager.getAuthToken(account, "wise", null, activity, null, null); 

try { 
    Bundle authTokenBundle = amf.getResult(); 
    String authToken = authTokenBundle.getString(AccountManager.KEY_AUTHTOKEN); 

    // do something with the token 
    InputStream response = sgc.getFeedAsStream(feedUrl, authToken, null, "2.1"); 

} 

Ich hoffe, das hilft.

1

Stellen Sie sicher, dass Sie nach der Authentifizierung GoogleHeaders.setGoogleLogin anrufen. Dann können Sie diese sample code für weitere Hilfe bei Bedarf überprüfen.

Verwandte Themen