• Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
837
On Slideshare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
1
Comments
0
Likes
1

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 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
  • 5. Google Play Serviceについてお話ししようかと思いましたが…   Google Play Services だけだとすぐ終わりそう  Google Play Services はGoogle APIのプラット フォーム  AndroidにおけるGoogle APIの活用全般のお話し します。
  • 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サービス
  • 8. GOOGLEアカウントとANDROID
  • 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
  • 12. Google アカウントとAndroidデバイス   多くのGoogleサービスを利用するために必要なID  Android互換デバイスは、必ずひとつ以上の Googleアカウントと紐づいていると見做してよい  アカウントをアクティベートしないとGoogle Mapsも Google Playも Gmailも使えない  Google Appsアカウント(独自ドメイン)も可能
  • 13. Googleアカウント   Googleアカウントを軸に様々なサービスを利用可能 Androidは、Googleアカウント を使って様々なサービスを利 用する入り口となる
  • 14. アカウントの管理アカウントへのアクセスリクエスト  アカウント認証情報はデバイスが持つ  アプリ毎に認証情報を管理する必要が無い。  ユーザーも何度もIDとパスワードを入力する必要が無い。  アプリから認証済アカウントへのアクセスが容易。
  • 15. プログラムからの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/
  • 21. Googleライブラリのセットアップ   プロジェクトを右クリック ->Google->Add Google APIs…
  • 22. Googleライブラリのセットアップ   必要なライブラリを選択
  • 23. Googleライブラリのセットアップ   プロジェクトのビルドバスに追加される  依存関係のあるJARも含まれる
  • 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
  • 31. 公開APIの確認   公開API群の一覧
  • 32. 公開APIの確認   APIが提供するエンドポイントの一覧
  • 33. 公開APIの確認   パラメータを指定してAPIの実行テスト
  • 34. ANDROIDクライアントでの利用
  • 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 implementsAccountManagerCallback<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 clientsecret); 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.getIntent(), 1);
 } catch (GoogleAuthException fatalException) {
     // その他の例外
 }
・・・
  • 43. 認可画面の例   認可によってアクセス可能なスコープの例  自カウントに対するGoogle +APIによるア クセス  oauth2:https://www.googleapis.com/auth/ plus.me
  • 44. まとめ   Googleは、様々なサービスを提供しており、それ らをGoogleアカウント経由で利用できる  Google APIは、OAuth2を使って認証・認可する。 独自のGoogle APIを作成する為の手段として、 Google Cloud Endpointsなどが出てきている。   様々なGoogleサービスと連携するための土台とし て、Google Playサービスの導入、提供が開始さ れており、今後はGoogle PlayサービスによるAPI の提供が標準的な形態になると思われる
  • 45. ご清聴ありがとうございました EGAWA Takashi