グーグルのAPIを使うときに欠かせないGoogle OAuthの作り方と使い方:Androidで動く携帯Javaアプリ作成入門(59)(2/3 ページ)
Gmail、Google Maps、YouTube、Google DriveなどをAPIとして活用する際に必要となるGoogle OAuthの作り方と、Androidアプリを例にした使い方を解説する。
Androidアプリの設定
AndroidアプリのAndroidManifest.xmlは以下のように設定します。
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.android.google.oauth.sample" > <!-- インターネット通信を行うため必要 --> <uses-permission android:name="android.permission.INTERNET" /> <!-- アカウント情報を取得するため必要 --> <uses-permission android:name="android.permission.GET_ACCOUNTS" /> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> <!-- Google Play Serviceを利用するため必要 --> <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" /> </activity> </application> </manifest>
必要なパーミッションを追加して、Google Play Servicesを使用するために必要なメタデータを設定します。
アプリのbuild.gradleは以下のように設定します。
apply plugin: 'com.android.application' android { compileSdkVersion 22 buildToolsVersion "22.0.1" defaultConfig { applicationId "com.example.android.google.oauth.sample" minSdkVersion 14 targetSdkVersion 22 versionCode 1 versionName "1.0" // ビルド時に発生する // com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536 //を回避する設定 multiDexEnabled = true } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } // リポジトリを追加 repositories { mavenCentral() } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:appcompat-v7:22.2.1' // 以下依存ライブラリを追加 compile 'com.google.apis:google-api-services-drive:v2-rev177-1.20.0' compile 'com.google.apis:google-api-services-plus:v1-rev232-1.20.0' compile 'com.google.android.gms:play-services:7.5.0' compile 'com.google.api-client:google-api-client-android:1.20.0' compile 'com.google.http-client:google-http-client-gson:1.20.0' }
multiDexEnabled = trueの設定を行わなければ、DexIndexOverflowExceptionでビルドエラーが発生します。依存ライブラリは2015年7月時点での最新版を利用しています。この組み合わせなら動作しますが、バージョンアップして動作が安定する可能性があるので、できる限り新しいバージョンを利用することを推奨します。
アプリの動作
アプリの実装の解説に先立ち、アプリの動作を説明しておきます。アプリはメイン画面とメニュー操作だけの簡単な作りになっています。
アプリを起動すると、Google DriveとGoogle+を使用するアカウント選択ダイアログが表示されます。アプリの設計によりますが、このダイアログの表示を省略して、アカウント情報(具体的にはメールアドレス)をユーザーに手入力してもらうことも可能ですが、この方法が間違いないでしょう。
アカウントを選択すると、選択したアカウントのアカウント名が表示されます。この状態でGoogle APIが利用可能な状態になっています。
メニューから利用するサービスを選択します。ここではDriveを選択します。OAuthは先ほどのアカウントの選択ダイアログをキャンセルで閉じた場合にアクティブになり、再度アカウントの選択ダイアログを表示します。
APIの初回利用時にGoogle Developer Consoleで作成した認証画面が表示されます。ユーザーはOKをタップして同意しない限りAPIが利用できません。
この認証画面はOKを選択すると、次回以降表示されません。この認証画面やその周辺の実装のテストを行いたい場合、「Google設定 > 接続済みのアプリ」からテスト対象のアプリを選択し、「接続を解除」をタップすることで初期状態に戻すことができます。
Driveの機能として、Driveにあるファイル一覧を取得して、ファイル名と所有者を表示しています。全部モザイクで恐縮です。ぜひ、今回の記事とサンプルアプリを用いて実際に動作させてみてください。
Plusでは、ユーザーのプロフィールを取得して表示しています。後半のモザイクになっている部分は、ユーザープロフィールを持つPersonインスタンスをtoString()したJSON形式の文字列です。ここも、実際に動作させてみてどのような情報が含まれているか確認してみてください。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
「OAuth」の基本動作を知る
いまWebの世界では、さまざまなWebサービスが提供するプラットフォームと、サードパーティが提供するアプリケーションがAPIを中心に結び付き、一種の「APIエコノミー」を形成しています。この連載では、そこで重要な役割を果たす「デジタル・アイデンティティ」について理解を深めていきます。(編集部)RFCとなった「OAuth 2.0」――その要点は?
いまWebの世界では、さまざまなWebサービスが提供するプラットフォームと、サー ドパーティが提供するアプリケーションがAPIを中心に結び付き、一種の「APIエコノミー」を形成しています。この連載では、そこで重要な役割を果たす「デジタル・アイデンティティ」について理解を深めていきます。OAuthを悪用したアカウント乗っ取りに注意喚起、IPA
JavaでTwitterをOAuth認証して使えるTwitter4Jとは
数年前に比べケータイ向けサービス構築を支援するフレームワークやノウハウがたまってきて、そして無料または、格安でサービスを公開できる仕組み(クラウドやVPSなど)も普及している今こそ、ケータイ向けサービス開発を始めるチャンスではないでしょうかOAuthでバーコード情報をTwitterに投稿するiPhoneアプリ作成
iPad/iPhone VS Androidに戸惑っているWebデザイナ/開発者のために、Web技術でネイティブアプリを作れるオープンソースの開発ツールを紹介し、その利点や使い方を連載で解説します- OAuth 2.0を使うソーシャルなAndroidアプリの作り方
OAuth 2.0のソーシャルなWeb APIを使った、Androidで動く簡単なネイティブ・アプリケーションの作り方を解説します - OAuth 2.0でWebサービスの利用方法はどう変わるか
OAuthの現状と1.0の問題点、2.0での特徴などを解説し、2.0の例としてFacebookのAPIの利用例を紹介します