Contenu connexe
Similaire à GDG Shikoku 2013
Similaire à GDG Shikoku 2013 (20)
GDG Shikoku 2013
- 1. GDG Shikoku #37 徳島テクニカルセッション
GOOGLE PLAY SERVICES について
Smartium株式会社 江川 崇
- 2. 江川 崇(EGAWA Takashi)
Smartium株式会社 (http://smartiums.com ) 代表取締役
Google Developers Expert (https://developers.google.com/experts/ )
(株)カトマック・情報技術開発(株)・(株)トップゲート 技術顧問
Androidプログラミング入門 改訂2版
IMoNi、L10N
twitter:@t_egg
Google+:t.egawa@gmail.com
- 3. Google Android プログラミング入門改訂2版
江川崇、神原健一、山田暁通、
佐野徹郎、郷田まり子 共著
定価 :3,570円 (本体3,400円)
発売日:2012年8月31日
形態 :B5変 (448ページ)
ISBN :978-4-04-886068-0
アスキー・メディアワークス
達人出版会からPDF版もあり
サンプルを全て詰めたアプリアリマス
https://play.google.com/store/apps/details?id=jp.asciimw.androidbook
- 4. Remote TestKit
カトマックが提供するAndroid用リモートテスト環境
必要な端末を必要な時間だけ借りてリモートでテスト
ADBが繋がる
PCから画面の操作も可能
http://appkitbox.com/testkit
- 6. GDG Shikoku #37 徳島テクニカルセッション
GOOGLE API の活用 FOR ANDROID
Smartium株式会社 江川 崇
- 7. Agenda
GoogleアカウントとAndroid
互換/非互換
Android
GoogleアカウントとAndroidデバイス
プログラムからのGoogleアカウントの活用
OAuth
Google Plugin for Eclipse
Google Cloud Endpoints
Androidクライアントでの利用
AccountManager
Googl Playサービス
- 9. Android 互換/非互換
世の中の全てのAndroidデバイスは、必ず以下の
2種類のいずれかに該当する。
Android互換(“Android compatible” である)
Android非互換(“Android compatible” ではない)
- 10. Android互換
Android Compatibility Programに従ったデバイス
http://source.android.com/compatibility/index.html
Compatibility Definition Document (CDD)に沿って開
発され、Compatibility Test Suite (CTS)を通過した端
末
Compatibility Definition Document (CDD):仕様
Compatibility Test Suite (CTS):テスト
日本で買えるほぼ全てのスマフォやタブレットは
Android互換
- 11. Android 非互換
Androidとして公式には認められないデバイス
※Compatibility Definition Document (CDD)に従っていな
いデバイス
Google系サービスアプリが利用できない
用途を限定したデバイスや安価なデバイスには増え
つつある
例)
ONKYO Internet Stick NT-A1
Covia FleadTab CTB-701
Kindle Fire HD
- 13. Googleアカウント
Googleアカウントを軸に様々なサービスを利用可能
Androidは、Googleアカウント
を使って様々なサービスを利
用する入り口となる
- 16. Googleアカウントの利用
以前はClientLoginやAuthSubという仕組みを利用。た
だし2012年の春にdeprecatedに。
参考)
ClientLogin
https://developers.google.com/accounts/docs/
AuthForInstalledApps
AuthSub
https://developers.google.com/accounts/docs/AuthSub
現在はOAuth 2.0を使うようアナウンス有り
- 17. OAuthとは
WEBに公開しているデータやAPIに対するアクセ
スの認可を目的として標準化された通信仕様
OAuth RFC5849
OAuth2.0 RFC6749
他のプログラムから利用者のGoogleアカウントに
紐づいているサービスやデータに対するアクセス
を許したり拒否したりする仕組み
- 18. OAuthの主な長所
クライアント(コンシューマ)側に認証情報を残さな
い
全て許可/全て拒否ではなく、アクセス範囲(ス
コープ)の単位で扱える
一度許可したものを後から取り消せる
- 19. OAuth2.0/ OAuth1.0
OAuth2.0は、OAuth1.0の上位規格。
OAuth1.0は
WEBサービスアプリを前提としていた
シーケンスが複雑で、リクエストの署名やリクエストトーク
ンが必須であるなど、使いにくい面があった。
特にJavaScriptなどのWEBアプリから
OAuth2.0は、OAuth1.0の簡略化を目指したもの。
シーケンスを簡単に
リクエストをHTTPSに限定することで、改ざんが無いことを担保す
るため、署名やトークンが必須ではない
デスクトップクライアントやJavaScriptからの利用も想定
- 20. Google Plugin for Eclipse
Googleの各サービスのAPIや、開発環境を手軽に
ダウンロード、セットアップできるEclipse Plugin
最近はADT(Android Development Tools) も含まれ
ているので、Androidを使った開発や、Androidと他
のGoogle APIとを組み合わせた開発でも便利に
使える
https://developers.google.com/eclipse/
- 24. APIs Consoleでの設定
自作のWEB APIか、既にあるAPIかにかかわらず、
OAuthを介してGoogleサービスを利用する場合、
プロジェクトを作成し、コンシューマ側にキーを発
行する必要がある。
ひとつのプロジェクトに対して20個のクライアント
IDが発行できる。
- 25. APIs Consoleでの設定
Google APIs Console( https://code.google.com/
apis/console ) からプロジェクトを作成
メニューの「API Access」 ->「Create OAuth 2.0
Client ID…」を選択
- 26. 自作公開APIでの利用例
Google Cloud Endpoints
AppEngineをバックエンドとして使うクライアントアプリ
ケーションの開発をより簡単にすることを目的として
開発されているAppEngineの新機能
Google
Plugin for Eclipseで開発可能
参考)Google I/O 2012でのコードラボ
http://tictactoe-codelab.appspot.com/
現状はまだ限定公開
Trusted Testers ( https://endpoints-trusted-
tester.appspot.com/ )に申請して利用する(ローカルサー
バーで試すだけなら申請不要)
2012年末のAppEngineのアップデートで導入されるかも?
と言う噂があったが、まだ正式公開されていない
- 27. Cloud Endpoints の主な機能
サーバー側APIクラスやコンフィグの生成
クライアントAPIライブラリの自動生成
JavaScript、Objective-C, Java
OAuthによるAPI認証の標準サポート
- 28. Cloud EndpointsでのAPI定義 (Java)
公開したいクラスやメソッドにアノテーションを宣言
@Api(name = "tictactoe")
public class BoardEndpoint {
@ApiMethod(name = "board.getmove", httpMethod = "POST")
public Board getmove(Board board) {
・・・
}
・・・
- 29. Cloud EndpointsでのAPI定義 (Java)
通常は認証無しで呼べるが、OAuthをサポートす
る際もアノテーションで対応
@Api(
name = "tictactoe",
clientIds = {"xxxxx.apps.googleusercontent.com",
"AndroidのClient ID"},
audiences = {”your_appid.appspot.com"}
)
・・・
- 30. 公開APIの確認
AppEngineにデプロイしたAPIは、API Explorerで確
認できる
URL)
https://developers.google.com/apis-explorer/?
base=https://your_appid.appspot.com/_ah/api
- 35. Androidクライアントからの利用例
AccountManagerからAuthトークンを取得
AccountManager am = AccountManager.get(this);
Bundle options = new Bundle();
am.getAuthToken(myAccount_,
mScope,
options,
this,
new OnTokenAcquired(),
new Handler(new OnError()));
- 36. Androidクライアントからの利用例
Authトークンが得られなかった時は認可画面へ
private class OnTokenAcquired implements
AccountManagerCallback<Bundle> {
@Override
public void run(AccountManagerFuture<Bundle> result) {
...
Intent launch = (Intent)
result.get(AccountManager.KEY_INTENT);
if (launch != null) {
startActivityForResult(launch, 0);
return;
}
}
}
- 37. Androidクライアントからの利用例
リクエスト時はAuthトークンの他にクライアントID等
も渡す
URL url = new URL("https://www.googleapis.com/・・・");
URLConnection conn = (HttpURLConnection)
url.openConnection(); conn.addRequestProperty("client_id",
your client id);
conn.addRequestProperty("client_secret", your client
secret);
conn.setRequestProperty(“Authorization”, your auth token);
- 38. Google Playサービス
AndroidアプリとGoogleの各種サービスとの連携を
さらに容易に行えるように拡張されたコンポーネント
現状は、従来のアプリからのGoogleアカウント認証機能
に加え、OAuth 2.0 を用いて、Google +サービスへの認
可を行えるように拡張されたもの
- 39. Google Playサービス
各アプリケーションからライブラリを利用してGoogle
Playサービスアプリと連携する
Android Maps v.2もGoogle Playサービ
ス前提なので、今後はこの形態で提供
されるAPIが増えそう。
- 40. Google Playサービスが入っているデ
バイス
Google Playサービスアプリは、2.2以上のデバイスが対象
Google Playアプリの最新版と同時にデバイスにインストー
ルされる
2.2以上のAndroid互換デバイスであれば、ほぼ例外無く
使えると考えておいてよさそう
「Google Playサービス」というアプリが入っているかどうか
で判断
- 41. Google Playサービスの使い方
現時点ではAndroid SDK Managerで、extras/Google Play
services をインストールすると、
「[Android SDK]/extras/google/google_play_services」
の下に、ライブラリプロジェクトやサンプルプロジェクトがダ
ウンロードされる
このライブラリプロジェクトをEclipseにインポートし、アプリ
のプロジェクトから参照する形で利用する
- 42. コード例
String authToken = null;
try {
authToken = GoogleAuthUtil.getToken(mActivity,
t.egawa@gmail.com, “oauth2:https://www.googleapis.com/auth/
userinfo.profile”);
} catch (GooglePlayServicesAvailabilityException playException) {
// Google Play Servicesが使えないデバイスの場合
} catch (UserRecoverableAuthException userRecoverableException) {
// トークンが得られなかった場合
// 認可画面へ遷移する
mActivity.startActivityForResult(userRecoverableException.getInten
t(), 1);
} catch (GoogleAuthException fatalException) {
// その他の例外
}
・・・
- 44. まとめ
Googleは、様々なサービスを提供しており、それ
らをGoogleアカウント経由で利用できる
Google APIは、OAuth2を使って認証・認可する。
独自のGoogle APIを作成する為の手段として、
Google Cloud Endpointsなどが出てきている。
様々なGoogleサービスと連携するための土台とし
て、Google Playサービスの導入、提供が開始さ
れており、今後はGoogle PlayサービスによるAPI
の提供が標準的な形態になると思われる