AccountManagerを使ってGoogleサービスの情報を取得する
久しぶりにAndroidの開発ネタ。Googleリーダーアプリ(RSSリーダー)を作ろうと思ったことがあり、AccountManagerの使い方を調べていた。
手順としては2段階となる。
- Android端末のGoogleアカウントを取得
- Googleサービスの情報を取得
AccountManagerを使うと、Android端末に登録されているGoogleのアカウント情報を取得できる。その後、Googleにログイン(認証Tokenを使用)して、Googleサービスの情報を取得する。
AccountManagerを使用する
AccountManagerで検索すると、以下のサイトが見つかる。丁寧に解説されていて、すごく参考になった。
- Account Managerについて – adsaria mood
- AndroidのGoogle Authenticatorを解析(?)してみた | Mine’s Blog 見習い技術者のメモ帳
- Y.A.M の 雑記帳: Android 端末に設定されているアカウント情報を取得
ここはスキップ。上記のサイトを参考に。
Googleサービスの情報を取得
これでAccountManagerの使い方は分かるのだが、使い方が分からない。「Account Managerについて – adsaria mood」では、最後のサービスのデータ取得までは至っていない。
いろいろ試した結果、HttpHeaderに認証トークンを入れる事で、データ取得ができるようになった。今回は、Googleリーダーの情報が取得するサンプル。
[java]
private void loginGoogle(String token) {
DefaultHttpClient http_client = new DefaultHttpClient();
HttpGet httpGet = new HttpGet(“http://www.google.com/reader/atom/user/-/state/com.google/read");
httpGet.setHeader(“Authorization”, “GoogleLogin auth="+token);
HttpResponse response;
try {
response = http_client.execute(httpGet);
InputStream in = response.getEntity().getContent();
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
String l = null;
while ((l = reader.readLine()) != null) {
Log.i(“MyApp”, l);
}
} catch (Exception e) {
e.printStackTrace();
}
}
[/java]
Googleリーダーの情報が取得できた。
今回、作ったサンプルのソース。Androidエミュレータで、Googleアカウントを設定してから起動する必要がある。起動後にボタンを押すと、Googleリーダーの情報をLogcatに出力する。
GoogleリーダーのAPIは、以下のサイトを参考にした。正式に公開されていないらしい。