第5回から第8回の4回にかけて、
第9回は作成したチャットアプリケーションを拡張し、
今回使用したソースコードについては、
Facebookログイン機能について
KiiCloudではアプリケーションのサインアップ・
これらの認証に必要なコンポーネントはSDKに含まれているため、
今回はFacebookを例に説明しますが、
Facebookアカウントによるログインを利用するための手順は下記の通りです。次節から設定・
- Facebookアプリケーションの作成
- KiiCloudアプリケーションとFacebookアプリケーションの連携設定
- Facebookログイン機能の実装
Facebookアプリケーションの作成
まずはFacebookアプリケーションの作成を行います。Facebook Developersへアクセスして開発者登録を行い、

アプリケーションの作成が終わったら「Settings」→「Basic」を選択し、アプリケーションに固有の設定を行います。
このアプリケーションは “Native Android App”として動作させるため、この項目を選択し、“Package Name”、“Key Hashes”を合わせて設定します。チャットアプリケーションでは “com.kii.sample.chat”のパッケージネームを利用しているため、この値を設定します。

これでFacebookアプリケーションの設定は完了です。
KiiCloudアプリケーションとFacebookアプリケーションの連携設定
続いて、
開発者ポータルでKiiChat-gihyoアプリケーションを選択後、

以上で、KiiCloudとFacebookの連携設定が完了しました。
Facebookログイン機能の実装
いよいよFacebookログイン機能の実装を行います。第5回で実装したユーザーサインアップのフローを元に、Facebookログインのフローを下記のようにします

- Facebookアカウントを用いてログインする。
- chat_
usersバケットに自身の情報を登録し、 他のユーザーから検索できるようにする。 - 他のユーザーから通知を受け取るために自分専用の invite_
notify トピックをユーザースコープに作成する。ただしユーザースコープのトピックは、 デフォルトのACLで他のユーザーからメッセージが送信できない設定となっているため、 追加でACLを設定し、 他のユーザーからメッセージが送信できるように設定する。
上記フローの1つ目、
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_signin);
this.btnFbSignin = (Button)findViewById(R.id.button_facebook);
this.btnFbSignin.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// KiiFacebookConnectのインスタンスを取得し、FacebookのAppIDで初期化する
KiiFacebookConnect connect = (KiiFacebookConnect)Kii.socialConnect(SocialNetwork.FACEBOOK);
connect.initialize(ApplicationConst.FACEBOOK_APP_ID, null, null);
// アプリケーションに必要なパーミッションの設定を行う
Bundle options = new Bundle();
String[] permission = new String[] { "email" };
options.putStringArray(KiiFacebookConnect.FACEBOOK_PERMISSIONS, permission);
// Facebookログインを行う
connect.logIn(SigninActivity.this, options, new KiiSocialCallBack() {
// ログイン完了時のコールバックを設定する
public void onLoginCompleted(SocialNetwork network, KiiUser user, Exception exception) {
if (exception == null) {
if (checkRemember.isChecked()) {
// ログイン状態を保持する場合は、SharedPreferencesにAccessTokenを保存する
Logger.i(user.getAccessToken());
PreferencesManager.setStoredAccessToken(user.getAccessToken());
}
// フロー2・フロー3のログイン後処理を行う
new PostSigninTask(user.getDisplayname(), user.getEmail()).execute();
} else {
// Exceptionがある場合はログイン失敗のToastを表示する
Logger.e("failed to sign up", exception);
ToastUtils.showShort(SigninActivity.this, "Unable to sign up");
}
}
});
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
Kii.socialConnect(SocialNetwork.FACEBOOK).respondAuthOnActivityResult(requestCode, resultCode, data);
}
まずは、
次に、
もちろんこれ以外のパーミッションを設定することもできます。詳細はFacebook Developersを確認してください。
そして、
まとめ
Facebookログインの実装を終えて、
このように、
またこのSNSログインは、
次回は、