45
GOOGLE PLAY SERVICES について Smartium株式会社 江川 GDG Shikoku #37 徳島テクニカルセッション

GDG Shikoku 2013

Embed Size (px)

Citation preview

Page 1: GDG Shikoku 2013

GOOGLE PLAY SERVICES について

Smartium株式会社 江川 崇

GDG Shikoku #37 徳島テクニカルセッション

Page 2: GDG Shikoku 2013

江川 崇(EGAWA Takashi)

  Smartium株式会社 (http://smartiums.com ) 代表取締役

  Google Developers Expert (https://developers.google.com/experts/ )   (株)カトマック・情報技術開発(株)・(株)トップゲート 技術顧問

  Androidプログラミング入門 改訂2版

  IMoNi、L10N twitter:@t_egg Google+:[email protected]

Page 3: GDG Shikoku 2013

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

Page 4: GDG Shikoku 2013

Remote TestKit

 カトマックが提供するAndroid用リモートテスト環境  必要な端末を必要な時間だけ借りてリモートでテスト  ADBが繋がる  PCから画面の操作も可能

http://appkitbox.com/testkit

Page 5: GDG Shikoku 2013

Google Play Serviceについてお話ししようかと思いましたが…

  Google Play Services だけだとすぐ終わりそう

  Google Play Services はGoogle APIのプラットフォーム

  AndroidにおけるGoogle APIの活用全般のお話しします。

Page 6: GDG Shikoku 2013

GOOGLE API の活用 FOR ANDROID

Smartium株式会社 江川 崇

GDG Shikoku #37 徳島テクニカルセッション

Page 7: GDG Shikoku 2013

Agenda

  GoogleアカウントとAndroid  Android 互換/非互換  GoogleアカウントとAndroidデバイス

 プログラムからのGoogleアカウントの活用  OAuth  Google Plugin for Eclipse  Google Cloud Endpoints

  Androidクライアントでの利用  AccountManager  Googl Playサービス

Page 8: GDG Shikoku 2013

GOOGLEアカウントとANDROID

Page 9: GDG Shikoku 2013

Android 互換/非互換

 世の中の全てのAndroidデバイスは、必ず以下の2種類のいずれかに該当する。

  Android互換(“Android compatible” である)

  Android非互換(“Android compatible” ではない)

Page 10: GDG Shikoku 2013

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互換

Page 11: GDG Shikoku 2013

Android 非互換

 Androidとして公式には認められないデバイス   ※Compatibility Definition Document (CDD)に従っていな

いデバイス

 Google系サービスアプリが利用できない

 用途を限定したデバイスや安価なデバイスには増えつつある

ONKYO Internet Stick NT-A1 Covia FleadTab CTB-701

例)

Kindle Fire HD

Page 12: GDG Shikoku 2013

Google アカウントとAndroidデバイス

 多くのGoogleサービスを利用するために必要なID   Android互換デバイスは、必ずひとつ以上の

Googleアカウントと紐づいていると見做してよい  アカウントをアクティベートしないとGoogle Mapsも

Google Playも Gmailも使えない

  Google Appsアカウント(独自ドメイン)も可能

Page 13: GDG Shikoku 2013

Googleアカウント

  Googleアカウントを軸に様々なサービスを利用可能

Androidは、Googleアカウントを使って様々なサービスを利用する入り口となる

Page 14: GDG Shikoku 2013

アカウントの管理 アカウントへのアクセスリクエスト

 アカウント認証情報はデバイスが持つ  アプリ毎に認証情報を管理する必要が無い。  ユーザーも何度もIDとパスワードを入力する必要が無い。  アプリから認証済アカウントへのアクセスが容易。

Page 15: GDG Shikoku 2013

プログラムからの GOOGLEアカウントの活用

Page 16: GDG Shikoku 2013

Googleアカウントの利用

  以前はClientLoginやAuthSubという仕組みを利用。ただし2012年の春にdeprecatedに。

参考)  ClientLogin

https://developers.google.com/accounts/docs/AuthForInstalledApps

 AuthSub https://developers.google.com/accounts/docs/AuthSub

  現在はOAuth 2.0を使うようアナウンス有り

Page 17: GDG Shikoku 2013

OAuthとは

 WEBに公開しているデータやAPIに対するアクセスの認可を目的として標準化された通信仕様  OAuth RFC5849  OAuth2.0 RFC6749

 他のプログラムから利用者のGoogleアカウントに紐づいているサービスやデータに対するアクセスを許したり拒否したりする仕組み

Page 18: GDG Shikoku 2013

OAuthの主な長所

 クライアント(コンシューマ)側に認証情報を残さない

 全て許可/全て拒否ではなく、アクセス範囲(スコープ)の単位で扱える

 一度許可したものを後から取り消せる

Page 19: GDG Shikoku 2013

OAuth2.0/ OAuth1.0

  OAuth2.0は、OAuth1.0の上位規格。   OAuth1.0は

 WEBサービスアプリを前提としていた  シーケンスが複雑で、リクエストの署名やリクエストトーク

ンが必須であるなど、使いにくい面があった。  特にJavaScriptなどのWEBアプリから

  OAuth2.0は、OAuth1.0の簡略化を目指したもの。  シーケンスを簡単に

 リクエストをHTTPSに限定することで、改ざんが無いことを担保するため、署名やトークンが必須ではない

 デスクトップクライアントやJavaScriptからの利用も想定

Page 20: GDG Shikoku 2013

Google Plugin for Eclipse

  Googleの各サービスのAPIや、開発環境を手軽にダウンロード、セットアップできるEclipse Plugin

 最近はADT(Android Development Tools) も含まれているので、Androidを使った開発や、Androidと他のGoogle APIとを組み合わせた開発でも便利に使える

https://developers.google.com/eclipse/

Page 21: GDG Shikoku 2013

Googleライブラリのセットアップ

 プロジェクトを右クリック ->Google->Add Google APIs…

Page 22: GDG Shikoku 2013

Googleライブラリのセットアップ

 必要なライブラリを選択

Page 23: GDG Shikoku 2013

Googleライブラリのセットアップ

 プロジェクトのビルドバスに追加される  依存関係のあるJARも含まれる

Page 24: GDG Shikoku 2013

APIs Consoleでの設定

 自作のWEB APIか、既にあるAPIかにかかわらず、OAuthを介してGoogleサービスを利用する場合、プロジェクトを作成し、コンシューマ側にキーを発行する必要がある。

 ひとつのプロジェクトに対して20個のクライアントIDが発行できる。

Page 25: GDG Shikoku 2013

APIs Consoleでの設定

  Google APIs Console( https://code.google.com/apis/console ) からプロジェクトを作成

 メニューの「API Access」 ->「Create OAuth 2.0 Client ID…」を選択

Page 26: GDG Shikoku 2013

自作公開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のアップデートで導入されるかも?と言う噂があったが、まだ正式公開されていない

Page 27: GDG Shikoku 2013

Cloud Endpoints の主な機能

 サーバー側APIクラスやコンフィグの生成

 クライアントAPIライブラリの自動生成  JavaScript、Objective-C, Java

  OAuthによるAPI認証の標準サポート

Page 28: GDG Shikoku 2013

Cloud EndpointsでのAPI定義 (Java)

 公開したいクラスやメソッドにアノテーションを宣言

@Api(name = "tictactoe")public class BoardEndpoint {  @ApiMethod(name = "board.getmove", httpMethod = "POST")  public Board getmove(Board board) {   ・・・  } ・・・

Page 29: GDG Shikoku 2013

Cloud EndpointsでのAPI定義 (Java)

 通常は認証無しで呼べるが、OAuthをサポートする際もアノテーションで対応

@Api(   name = "tictactoe",   clientIds = {"xxxxx.apps.googleusercontent.com", "AndroidのClient ID"},   audiences = {”your_appid.appspot.com"}) ・・・

Page 30: GDG Shikoku 2013

公開APIの確認

  AppEngineにデプロイしたAPIは、API Explorerで確認できる

  URL)  https://developers.google.com/apis-explorer/?

base=https://your_appid.appspot.com/_ah/api

Page 31: GDG Shikoku 2013

公開APIの確認

 公開API群の一覧

Page 32: GDG Shikoku 2013

公開APIの確認

  APIが提供するエンドポイントの一覧

Page 33: GDG Shikoku 2013

公開APIの確認

 パラメータを指定してAPIの実行テスト

Page 34: GDG Shikoku 2013

ANDROIDクライアントでの 利用

Page 35: GDG Shikoku 2013

Androidクライアントからの利用例

  AccountManagerからAuthトークンを取得

AccountManager am = AccountManager.get(this); Bundle options = new Bundle(); am.getAuthToken(myAccount_, mScope, options, this, new OnTokenAcquired(), new Handler(new OnError()));

Page 36: GDG Shikoku 2013

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; } } }

Page 37: GDG Shikoku 2013

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

Page 38: GDG Shikoku 2013

Google Playサービス

  AndroidアプリとGoogleの各種サービスとの連携をさらに容易に行えるように拡張されたコンポーネント  現状は、従来のアプリからのGoogleアカウント認証機能

に加え、OAuth 2.0 を用いて、Google +サービスへの認可を行えるように拡張されたもの

Page 39: GDG Shikoku 2013

Google Playサービス

 各アプリケーションからライブラリを利用してGoogle Playサービスアプリと連携する

Android Maps v.2もGoogle Playサービス前提なので、今後はこの形態で提供されるAPIが増えそう。

Page 40: GDG Shikoku 2013

Google Playサービスが入っているデバイス

  Google Playサービスアプリは、2.2以上のデバイスが対象   Google Playアプリの最新版と同時にデバイスにインストー

ルされる

  2.2以上のAndroid互換デバイスであれば、ほぼ例外無く使えると考えておいてよさそう

  「Google Playサービス」というアプリが入っているかどうかで判断

Page 41: GDG Shikoku 2013

Google Playサービスの使い方

  現時点ではAndroid SDK Managerで、extras/Google Play services をインストールすると、

 「[Android SDK]/extras/google/google_play_services」

 の下に、ライブラリプロジェクトやサンプルプロジェクトがダウンロードされる

  このライブラリプロジェクトをEclipseにインポートし、アプリのプロジェクトから参照する形で利用する

Page 42: GDG Shikoku 2013

コード例

String authToken = null; try {  authToken = GoogleAuthUtil.getToken(mActivity, [email protected], “oauth2:https://www.googleapis.com/auth/userinfo.profile”); } catch (GooglePlayServicesAvailabilityException playException) {     // Google Play Servicesが使えないデバイスの場合 } catch (UserRecoverableAuthException userRecoverableException) {     // トークンが得られなかった場合     // 認可画面へ遷移する     mActivity.startActivityForResult(userRecoverableException.getIntent(), 1); } catch (GoogleAuthException fatalException) {     // その他の例外 }・・・

Page 43: GDG Shikoku 2013

認可画面の例

  認可によってアクセス可能なスコープの例   自カウントに対するGoogle +APIによるア

クセス

  oauth2:https://www.googleapis.com/auth/plus.me

Page 44: GDG Shikoku 2013

まとめ

  Googleは、様々なサービスを提供しており、それらをGoogleアカウント経由で利用できる

  Google APIは、OAuth2を使って認証・認可する。独自のGoogle APIを作成する為の手段として、Google Cloud Endpointsなどが出てきている。

 様々なGoogleサービスと連携するための土台として、Google Playサービスの導入、提供が開始されており、今後はGoogle PlayサービスによるAPIの提供が標準的な形態になると思われる

Page 45: GDG Shikoku 2013

ご清聴ありがとうございました

EGAWA Takashi