2010-08-16 6 views
6

Android 2.1'de yüklü bir uygulama için Google Veri API'sini kullanmaya çalışıyorum. Cihazda yapılandırılmış bir hesabı varsa, kullanıcının kimlik bilgilerini girmesini istemiyorum. Böylece, "com.google" Hesap türü ile AccountManager kullanıyorum.Android'de AccountManager hesaplarını kullanarak Google Veri API'sı için kimlik doğrulamanın resmi bir yolu var mı?

Ama oradan nereye gitmek? Google'dan Google kimlik doğrulaması (authTokenType vb.) Nasıl yapılacağı konusunda hiçbir örnek yoktur. Bunu yapmaya çalışan bir proje var (http://code.google.com/p/google-authenticator-for-android).

Bu zor olabilir mi? Bu, Google Okuyucu istemcileri gibi kullanıcıyı Google kimlik bilgileri için sormak zorunda olan uygulamaları saklı tutuyor (umarım kimseye vermez).

Herhangi bir işaretçi/tavsiye takdir edilmektedir.

cevap

1

Lütfen google veri api'sinde sample code'a bir göz atın. Kimlik doğrulamasından sonra yapılması gereken en önemli şey, GoogleHeaders.setGoogleLogin (String) araması yapmaktır.

4

Evet, bu mümkün. Google hesabında bir tanıtıcınız olduğunda (açıkladığınız gibi), GData hizmeti için AccountManager'dan bir auth jetonu talep etmeniz yeterlidir.

Eğer android aygıtta bir auth jetonu varsa (erişmeye çalıştığınız GData hizmeti için), size geri gönderilecektir. Değilse, AccountManager bir tane isteyecek ve size geri verecektir. Her iki durumda da, AccountManager'ın ele aldığı gibi bunun için endişelenmenize gerek yok.

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"); 

} 

umarım bu yardımcı olur: Aşağıdaki örnekte

, Google Tablolar API kullanıyorum.

1

Kimlik doğrulamasından sonra GoogleHeaders.setGoogleLogin numaralı telefonu aradığınızdan emin olun. Daha sonra gerekirse daha fazla yardım için bu sample code kontrol edebilirsiniz.