我正在尝试将 Google 数据 API 用于 Android 2.1 上已安装的应用程序。如果用户已经在设备上配置了帐户,我不希望用户必须输入他们的凭据。因此,我正在使用帐户类型为“com.google”的 AccountManager。
但是从那里去哪里呢? Google 没有关于如何进行 Google 身份验证(authTokenType 等)的示例。有一个项目试图以一般方式做到这一点 (http://code.google.com/p/google-authenticator-for-android),但还没有成功。
能这么难吗?这确实阻碍了像 Google Reader 客户端这样的应用程序,这些应用程序必须向用户询问他们的 Google 凭据(希望没有人给他们)。
欢迎任何指点/建议。
最佳答案
是的,这是可能的。一旦您掌握了 Google 帐户(如您所述),您只需从 AccountManager 请求 GData 服务的授权 token 。
如果 Android 设备已经有一个授权 token (针对您尝试访问的特定 GData 服务),它将返回给您。如果没有,AccountManager 将请求一个并将其返回给您。无论哪种方式,您都无需担心,因为 AccountManager 会处理它。
在以下示例中,我使用的是 Google Spreadsheets API:
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");
}
希望对您有所帮助。
关于java - 是否有一种官方方法可以使用 AccountManager 帐户在 Android 上对 Google Data API 进行身份验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3492775/