- ニフクラ mobile backendの『SNS連携(Facebook連携)』を利用して、Facebookのログイン機能を実装したサンプルプロジェクトです。
- Facebook連携で取得した会員データはニフクラ mobile backendの『会員管理機能』として扱うことができます。
- 【Android】アプリのログイン機能も用意していますので、参照ください。
- このコンテンツは簡単な操作ですぐに ニフクラ mobile backendの機能を体験いただけます。
スマートフォンアプリのバックエンド機能(プッシュ通知・データストア・会員管理・ファイルストア・SNS連携・位置情報検索・スクリプト)が開発不要、しかも基本無料(注1)で使えるクラウドサービス!今回はデータストアを体験します。
注1:詳しくはこちらをご覧ください。
- MacOS Monterey version 12.5
- Android Studio Chipmunk | 2021.2.1 Patch 2
- Pixel 2 - Android 13 (Simulator)
※上記内容で動作確認をしています。
1. ニフクラ mobile backendの会員登録とアプリ作成
- 上記リンクから会員登録(無料)をします。登録ができたらログインをすると下図のように「アプリの新規作成」画面が出るのでアプリを作成します。
- アプリ作成されると下図のような画面になります。
- この2種類のAPIキー(アプリケーションキーとクライアントキー)はAndroidアプリにニフクラ mobile backendを紐付けるために使用します。
- 動作確認後に会員情報(アクセストークン)が保存される場所も確認しておきましょう。
2. GitHubからサンプルプロジェクトのダウンロード
- プロジェクトのGithubページから「Clone or download」>「Download ZIP」をクリックします。
- プロジェクトを解凍します。
- AndroidStudioを開き、解凍したプロジェクトを選択します。
MainActivity.java
を編集します。- 先程ニフクラ mobile backendのダッシュボード上で確認したAPIキーを貼り付けます。
- それぞれ
YOUR_APPLICATION_KEY
とYOUR_CLIENT_KEY
の部分を書き換えます。- このとき、ダブルクォーテーション(
"
)を消さないように注意してください!
- このとき、ダブルクォーテーション(
- facebook for developersにログイン(Facebookアカウントがない場合はアカウントを作成)して、右上の「マイアプリ」からの「新しいアプリを追加」を選択します。
Build Connected Experiences
を選択して、Continue
で続きます。
- アプリ名を
App Display Name
に入力してからCreate App
でアプリを作ります。
Security Check
の認証のところでVerify
したら、Submit
で完了します。
- アプリ管理の画面で作成したアプリが確認できます。
アプリID
やクライアントトークン
の設定します。/app/src/main/res/values/strings.xml
を編集します。
- またこの
アプリID
はニフクラ mobile backendにも設定します。- 左側のメニューから、「アプリ設定」を開き、SNS連携の設定を開きます。
- 連携の許可にチェックを入れた上で、Facebookの開発者向けサイトで発行されたアプリIDを入力してください。
- 「保存する」をクリックします。
- 最後に「Basic」をクリックし、「Privacy policy URL」 を貼って、「Save」ボタンを押します。
- その後、上の「In development」にSwitchしますし、ポップアップの「Switch mode」を選びます。 これでアプリの公開は完了します。
- アプリをFacebookに結合する。
- 「Add Platform」をクリックしてAndroidのアプリを追加選択します。
- 「Key Hashes」欄に下記処理から値を取得・設定します。
- (Windowsの場合)コマンドプロンプトから次のコマンドを入力します。パスワードを聞かれますので 'android' と返します。
- このとき、opensslコマンドは「openssl場所」/bin/openssl.exeを指定しております。
- 1行目でコマンドを、2行目でパスワードを入力し、3行目でKey Hashが表示されます。
>keytool -exportcert -alias androiddebugkey -keystore %HOMEPATH%\.android\debug.keystore | openssl sha1 -binary | openssl base64
>キーストアのパスワードを入力してください: android
>0QYX************iNiEXYdeVw=
- アプリをFacebookに結合設定が無い場合はログインエラーになります。
- AndroidStudioからビルドする。
- 「プロジェクト場所」\app\build\outputs\apk***.apk ファイルが生成される。
- apk ファイルをインストールしてシミュレーターが起動したら、Login画面が表示されます。
- Login ボタンをクリックします。
- Facebookログインの画面(ブラウザ)が表示されるので、必要事項を入力し、ログインを行います。
- ログインに成功したらログアウトします。
- 保存に成功したら、ニフクラ mobile backendのダッシュボードから「会員管理」を確認してみましょう!
authData
にはアクセストークンが保存されます。
- Facebookにログインして「アプリ」>「アプリ設定」欄にログインの記録が保存されます。
操作はここまでです。
サンプルプロジェクトに実装済みの内容のご紹介
-
ニフクラ mobile backend のAndroid ドキュメント(クイックスタート)に開発中のアプリを連携する手順ご用意していますので、ご活用ください。
-
Android用Facebookログインと合わせてご活用ください。
- FacebookSDKを使用するための処理を
MainActivity.java
に記述しています
import com.facebook.CallbackManager;
import com.facebook.FacebookCallback;
import com.facebook.FacebookException;
import com.facebook.appevents.AppEventsLogger;
import com.facebook.login.LoginResult;
import com.facebook.login.widget.LoginButton;
import com.nifcloud.mbaas.core.NCMB;
import com.nifcloud.mbaas.core.NCMBException;
import com.nifcloud.mbaas.core.NCMBFacebookParameters;
import com.nifcloud.mbaas.core.NCMBUser;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//**************** APIキーの設定とSDKの初期化 **********************
NCMB.initialize(this.getApplicationContext(), "YOUR_APPLICATION_KEY", "YOUR_CLIENT_KEY");
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
AppEventsLogger.activateApp(this.getApplication());
callbackManager = CallbackManager.Factory.create();
LoginButton mLoginButton = findViewById(R.id.login_button);
mLoginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
//Login to NIFCLOUD mobile backend
NCMBFacebookParameters parameters = new NCMBFacebookParameters(
loginResult.getAccessToken().getUserId(),
loginResult.getAccessToken().getToken(),
loginResult.getAccessToken().getExpires()
);
try {
NCMBUser.loginWith(parameters);
Toast.makeText(getApplicationContext(), "Login to NIFCLOUD mbaas with Facebook account", Toast.LENGTH_LONG).show();
} catch (NCMBException e) {
e.printStackTrace();
}
}
@Override
public void onCancel() {
// App code
Log.d("tag", "onCancel");
}
@Override
public void onError(@NonNull FacebookException e) {
// App code
Log.d("tag", "onError:" + e);
}
});
}
- Facebook連携はブラウザのFacebookページに遷移し、行われます。
- Facebookログイン、ログアウトボタン押下時の処理は以下の
com.facebook.login.LoginManager.java
に記述しています
// ログインボタン押下時の処理
boolean onActivityResult(int resultCode, Intent data, FacebookCallback<LoginResult> callback) {
FacebookException exception = null;
AccessToken newToken = null;
LoginClient.Result.Code code = LoginClient.Result.Code.ERROR;
Map<String, String> loggingExtras = null;
LoginClient.Request originalRequest = null;
boolean isCanceled = false;
if (data != null) {
LoginClient.Result result =
(LoginClient.Result) data.getParcelableExtra(LoginFragment.RESULT_KEY);
if (result != null) {
originalRequest = result.request;
code = result.code;
if (resultCode == Activity.RESULT_OK) {
if (result.code == LoginClient.Result.Code.SUCCESS) {
newToken = result.token;
} else {
exception = new FacebookAuthorizationException(result.errorMessage);
}
} else if (resultCode == Activity.RESULT_CANCELED) {
isCanceled = true;
}
loggingExtras = result.loggingExtras;
}
} else if (resultCode == Activity.RESULT_CANCELED) {
isCanceled = true;
code = LoginClient.Result.Code.CANCEL;
}
if (exception == null && newToken == null && !isCanceled) {
exception = new FacebookException("Unexpected call to LoginManager.onActivityResult");
}
boolean wasLoginActivityTried = true;
Context context = null; //Sadly, there is no way to get activity context at this point.S
logCompleteLogin(
context,
code,
loggingExtras,
exception,
wasLoginActivityTried,
originalRequest);
finishLogin(newToken, originalRequest, exception, isCanceled, callback);
return true;
}
// ログアウトボタン押下時の処理
public void logOut() {
AccessToken.setCurrentAccessToken(null);
Profile.setCurrentProfile(null);
}
- もちろん直接FacebookSDKを呼ぶことも可能ですが、ニフクラ mobile backendSDKを呼べば裏でFacebookSDKを呼んで処理するので、1つ呼べば、Facebookへのログインとニフクラ mobile backendへ会員情報保存が同時に行えるので一石二鳥というわけです。
- また一度会員登録してしまえば、あとはニフクラ mobile backendの会員管理機能で処理が行えるので自前で会員管理システムを構築する必要がなくより楽に開発を行えます。
- ニフクラ mobile backend のドキュメント(SNS連携:Facebook連携)をご用意していますので、ご活用ください。
- Facebook開発の ドキュメント(Android用Facebookログイン)参照ください。