• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
GDG Shikoku 2013
 

GDG Shikoku 2013

on

  • 1,172 views

 

Statistics

Views

Total Views
1,172
Views on SlideShare
1,169
Embed Views
3

Actions

Likes
1
Downloads
1
Comments
0

1 Embed 3

https://twitter.com 3

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

CC Attribution-NonCommercial LicenseCC Attribution-NonCommercial License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    GDG Shikoku 2013 GDG Shikoku 2013 Presentation Transcript

    • GDG Shikoku #37 徳島テクニカルセッション GOOGLE PLAY SERVICES について Smartium株式会社 江川 崇
    • 江川 崇(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
    • 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
    • Remote TestKit   カトマックが提供するAndroid用リモートテスト環境  必要な端末を必要な時間だけ借りてリモートでテスト  ADBが繋がる  PCから画面の操作も可能http://appkitbox.com/testkit
    • Google Play Serviceについてお話ししようかと思いましたが…   Google Play Services だけだとすぐ終わりそう  Google Play Services はGoogle APIのプラット フォーム  AndroidにおけるGoogle APIの活用全般のお話し します。
    • GDG Shikoku #37 徳島テクニカルセッション GOOGLE API の活用 FOR ANDROID Smartium株式会社 江川 崇
    • Agenda   GoogleアカウントとAndroid 互換/非互換  Android  GoogleアカウントとAndroidデバイス  プログラムからのGoogleアカウントの活用  OAuth  Google Plugin for Eclipse  Google Cloud Endpoints  Androidクライアントでの利用  AccountManager  Googl Playサービス
    • GOOGLEアカウントとANDROID
    • Android 互換/非互換   世の中の全てのAndroidデバイスは、必ず以下の 2種類のいずれかに該当する。   Android互換(“Android compatible” である)   Android非互換(“Android compatible” ではない)
    • 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互換
    • Android 非互換  Androidとして公式には認められないデバイス  ※Compatibility Definition Document (CDD)に従っていな いデバイス  Google系サービスアプリが利用できない  用途を限定したデバイスや安価なデバイスには増え つつある 例) ONKYO Internet Stick NT-A1 Covia FleadTab CTB-701 Kindle Fire HD
    • Google アカウントとAndroidデバイス   多くのGoogleサービスを利用するために必要なID  Android互換デバイスは、必ずひとつ以上の Googleアカウントと紐づいていると見做してよい  アカウントをアクティベートしないとGoogle Mapsも Google Playも Gmailも使えない  Google Appsアカウント(独自ドメイン)も可能
    • Googleアカウント   Googleアカウントを軸に様々なサービスを利用可能 Androidは、Googleアカウント を使って様々なサービスを利 用する入り口となる
    • アカウントの管理アカウントへのアクセスリクエスト  アカウント認証情報はデバイスが持つ  アプリ毎に認証情報を管理する必要が無い。  ユーザーも何度もIDとパスワードを入力する必要が無い。  アプリから認証済アカウントへのアクセスが容易。
    • プログラムからのGOOGLEアカウントの活用
    • Googleアカウントの利用   以前はClientLoginやAuthSubという仕組みを利用。た だし2012年の春にdeprecatedに。 参考)   ClientLogin https://developers.google.com/accounts/docs/ AuthForInstalledApps   AuthSub https://developers.google.com/accounts/docs/AuthSub  現在はOAuth 2.0を使うようアナウンス有り
    • OAuthとは   WEBに公開しているデータやAPIに対するアクセ スの認可を目的として標準化された通信仕様  OAuth RFC5849  OAuth2.0 RFC6749  他のプログラムから利用者のGoogleアカウントに 紐づいているサービスやデータに対するアクセス を許したり拒否したりする仕組み
    • OAuthの主な長所   クライアント(コンシューマ)側に認証情報を残さな い  全て許可/全て拒否ではなく、アクセス範囲(ス コープ)の単位で扱える  一度許可したものを後から取り消せる
    • OAuth2.0/ OAuth1.0   OAuth2.0は、OAuth1.0の上位規格。  OAuth1.0は   WEBサービスアプリを前提としていた   シーケンスが複雑で、リクエストの署名やリクエストトーク ンが必須であるなど、使いにくい面があった。   特にJavaScriptなどのWEBアプリから  OAuth2.0は、OAuth1.0の簡略化を目指したもの。   シーケンスを簡単に   リクエストをHTTPSに限定することで、改ざんが無いことを担保す るため、署名やトークンが必須ではない   デスクトップクライアントやJavaScriptからの利用も想定
    • Google Plugin for Eclipse  Googleの各サービスのAPIや、開発環境を手軽に ダウンロード、セットアップできるEclipse Plugin  最近はADT(Android Development Tools) も含まれ ているので、Androidを使った開発や、Androidと他 のGoogle APIとを組み合わせた開発でも便利に 使えるhttps://developers.google.com/eclipse/
    • Googleライブラリのセットアップ   プロジェクトを右クリック ->Google->Add Google APIs…
    • Googleライブラリのセットアップ   必要なライブラリを選択
    • Googleライブラリのセットアップ   プロジェクトのビルドバスに追加される  依存関係のあるJARも含まれる
    • APIs Consoleでの設定   自作のWEB APIか、既にあるAPIかにかかわらず、 OAuthを介してGoogleサービスを利用する場合、 プロジェクトを作成し、コンシューマ側にキーを発 行する必要がある。  ひとつのプロジェクトに対して20個のクライアント IDが発行できる。
    • APIs Consoleでの設定   Google APIs Console( https://code.google.com/ apis/console ) からプロジェクトを作成  メニューの「API Access」 ->「Create OAuth 2.0 Client ID…」を選択
    • 自作公開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のアップデートで導入されるかも? と言う噂があったが、まだ正式公開されていない
    • Cloud Endpoints の主な機能   サーバー側APIクラスやコンフィグの生成   クライアントAPIライブラリの自動生成  JavaScript、Objective-C, Java  OAuthによるAPI認証の標準サポート
    • Cloud EndpointsでのAPI定義 (Java)   公開したいクラスやメソッドにアノテーションを宣言@Api(name = "tictactoe")
public class BoardEndpoint {
  @ApiMethod(name = "board.getmove", httpMethod = "POST")
  public Board getmove(Board board) {
   ・・・
  }
 ・・・
    • Cloud EndpointsでのAPI定義 (Java)   通常は認証無しで呼べるが、OAuthをサポートす る際もアノテーションで対応 @Api(
    name = "tictactoe",
    clientIds = {"xxxxx.apps.googleusercontent.com", "AndroidのClient ID"},
    audiences = {”your_appid.appspot.com"}
 ) ・・・
    • 公開APIの確認   AppEngineにデプロイしたAPIは、API Explorerで確 認できる  URL)  https://developers.google.com/apis-explorer/? base=https://your_appid.appspot.com/_ah/api
    • 公開APIの確認   公開API群の一覧
    • 公開APIの確認   APIが提供するエンドポイントの一覧
    • 公開APIの確認   パラメータを指定してAPIの実行テスト
    • ANDROIDクライアントでの利用
    • Androidクライアントからの利用例   AccountManagerからAuthトークンを取得 AccountManager am = AccountManager.get(this); Bundle options = new Bundle(); am.getAuthToken(myAccount_, mScope, options, this, new OnTokenAcquired(), new Handler(new OnError()));
    • 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; } } }
    • 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);
    • Google Playサービス   AndroidアプリとGoogleの各種サービスとの連携を さらに容易に行えるように拡張されたコンポーネント  現状は、従来のアプリからのGoogleアカウント認証機能 に加え、OAuth 2.0 を用いて、Google +サービスへの認 可を行えるように拡張されたもの
    • Google Playサービス   各アプリケーションからライブラリを利用してGoogle Playサービスアプリと連携する Android Maps v.2もGoogle Playサービ ス前提なので、今後はこの形態で提供 されるAPIが増えそう。
    • Google Playサービスが入っているデ バイス   Google Playサービスアプリは、2.2以上のデバイスが対象  Google Playアプリの最新版と同時にデバイスにインストー ルされる  2.2以上のAndroid互換デバイスであれば、ほぼ例外無く 使えると考えておいてよさそう   「Google Playサービス」というアプリが入っているかどうか で判断
    • Google Playサービスの使い方  現時点ではAndroid SDK Managerで、extras/Google Play services をインストールすると、 「[Android SDK]/extras/google/google_play_services」 の下に、ライブラリプロジェクトやサンプルプロジェクトがダ ウンロードされる  このライブラリプロジェクトをEclipseにインポートし、アプリ のプロジェクトから参照する形で利用する
    • コード例 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) {
     // その他の例外
 }
・・・
    • 認可画面の例   認可によってアクセス可能なスコープの例  自カウントに対するGoogle +APIによるア クセス  oauth2:https://www.googleapis.com/auth/ plus.me
    • まとめ   Googleは、様々なサービスを提供しており、それ らをGoogleアカウント経由で利用できる  Google APIは、OAuth2を使って認証・認可する。 独自のGoogle APIを作成する為の手段として、 Google Cloud Endpointsなどが出てきている。   様々なGoogleサービスと連携するための土台とし て、Google Playサービスの導入、提供が開始さ れており、今後はGoogle PlayサービスによるAPI の提供が標準的な形態になると思われる
    • ご清聴ありがとうございました EGAWA Takashi