前回では、アンドロイドアプリからGoogle+へログインする方法をご紹介しました。
Facebookからのログインは、Twitterからのログインと合わせて備えているアプリが多いです。
Facebook SDK3.0になってから、Facebookクラスがdeprecatedされて、大きく変わったように思います。Facebookは常に改善が加えられているためか、よく仕様が変わるように思います。気づかずそのままにしていると、いつのまにやら、動作しないアプリになっているときもあります(最近は変更通知がくるようになりました)。
Facebookでは、開発のロードマップが公開されているので、今後どのような変更が予定されているのか、よく知っておく必要がありそうです。
今回は、Facebook SDK3.0によるログイン方法をご紹介します。EclipseのバージョンはJuno Service Release 2(Win)を利用しています。
参考URL
- Getting Started with the Facebook SDK for Android
- Upgrading from 2.0 to 3.0
- Use Facebook Login
- Facebook SDK 3.0 for Android Reference
ダウンロード
まず、Facebook Android SDK 3.0.1をダウンロードします。
そして、File -> New -> Project… Android Project Existing CodeからEclipseへインポートしておきます。
SDKには、サンプルアプリもたくさん含まれています。ログイン関連だとSessionLoginSampleやScrumptiousが参考になると思います。必要なら同時にインポートします。
新しいFacebookアプリを作成
次にこちらからFacebookアプリを作成しておきます。
アプリの名前を決めて続行をクリックし、セキュリティチェックを通過すると、アプリの設定画面が表示されます。
ネイティブAndoroidアプリをチェックして、設定画面を開きます。
ここにアプリのパッケージ名とアクティビティ名、KeyHashを入力して、Facebookログインを有効にします。ログインのみならディープリンクは無効でもいいです。
KeyHashの生成
KeyHashを生成するには、keytoolとopensslが必要です。keytoolはJDKに含まれています。
以下のコマンド(Win)でパスワードを入力すれば、ハッシュが出力されます。
$ keytool -exportcert -alias androiddebugkey -keystore %HOMEPATH%\.android\debug.keystore | openssl sha1 -binary | openssl base64 キーストアのパスワードを入力してください: android alSY2Jj72aZzm9W067UtS13/i8I=
Facebookログインアプリを作成
では、アンドロイドアプリのプロジェクトを作成します。
パッケージ名やアクティビティ名は、さきほどFacebookアプリで設定したものを指定します。
FacebookSDKライブラリをインポート
プロジェクトのプロパティからFacebookSDKを選択して、Eclipseのワークスペースへインポートします。
このとき、以下のようなエラーがコンソールに出力されるかもしれません。
[2013-05-03 16:33:15 - FacebookLogin] Found 2 versions of android-support-v4.jar in the dependency list, [2013-05-03 16:33:15 - FacebookLogin] but not all the versions are identical (check is based on SHA-1 only at this time). [2013-05-03 16:33:15 - FacebookLogin] All versions of the libraries must be the same at this time.
追加したライブラリプロジェクトに同名(android-support-v4.jar)で異なるバージョンのライブラリがあるので警告しています。
FacebookSDKのandroid-support-v4.jarが古くなっているのだと思います。
FacebookSDKプロジェクトをandroid-support-v4.jarを最新にして、バージョンを揃えると解消します。
プロジェクトを右クリックして、Android Tools -> Add Support Library…からインストールしてください。
マニフェストに追記
マニフェストにインターネットのパーミッションを追加します。uses-permissionタグはapplicationタグより前に書かなければ警告が出ます。meta-dataはapplicationタグ内に書きます。また、strings.xmlのapp_idにさきほど作成したFacebookアプリのApp Idを設定しておきます。SDK3.0からはManifestにApp Idを設定するようになりました。
res/values/strings.xml
<string name="app_id">497906953566757</string>
AndroidManifest.xml
<!-- users-permissionはapplicationタグより前に --> <uses-permission android:name="android.permission.INTERNET"/> <!-- meta-dataはapplicationタグ内に --> <meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/app_id"/>
最後にcom.facebook.LoginActivityを追加します。
<activity android:name="com.facebook.LoginActivity"/>
これで、コーディング前の準備は整ったと思います。次回はコーディング編とします。