6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

MonacaでFirebaseのSNS認証を利用する

Posted at

皆さんこんにちは(^^

前回のMonacaでFirebaseのCloud Firestoreを利用してみる
に引き続き、SNS認証をやってみます。

今回はFacebook認証を利用しますので、事前にFacebookアプリを登録する必要があります。

※環境
FirebaseのSNS認証でカスタムプラグインを利用するので
今回からはMonacaのProプラン以上が必要になります。
※Freeプランの方は14日間トライアルでお試しください。
実機での確認はAndroidで行っています。

#Facebookアプリを登録する
Facebookのデベロッパーサイトにアクセス。
※開発者登録をしてない人は開発者登録しちゃってください。

「マイアプリ」→「新しいアプリを追加」を選択

次に表示されたダイアログで表示名と連絡先メールアドレスを入力します。
これはFacebook認証を行うときに、ユーザーに表示される名称になるので
実際のサービス名に合わせたほうが良いと思います。
「アプリIDを作成してください」をクリックしてアプリが作られます。

この設定画面にある”アプリID”と”app secret”は後ほど使うのでコピーしておいてください。

#FirebaseのSNS認証を有効にする
次はFirebaseの管理コンソールに戻ってFacebookを選択してください。

「有効にする」を選択するとアプリケーションIDとアプリシークレットが入力可能になるので
先ほどコピーした”アプリID”と”app secret”をペーストしてください。

一番下にあるURLをコピーして、「保存」ボタンをクリックします。

#FacebookのOAuth認証を有効にする
またFacebookに戻ります。

プロダクトの「+」ボタンを押して、Facebookログインを追加します。
※「設定」を押すと追加されます。

次にFacebookログインの設定画面で「有効なOAuthリダイレクトURI」に
先ほどFirestoreのほうでコピーしたURLをペーストしてください。

最後に「変更を保存」をクリックします。

#Monacaの準備
ここからはMonacaのアプリでFirebaseのSNS認証を使うための準備です。

まずは「Coradovaプラグインのインポート」で
cordova-universal-links-plugin
cordova-plugin-buildinfo
cordova-plugin-browsertab
cordova-plugin-customurlscheme
の4つを追加します。

cordova-plugin-customurlschemeには↓のインストールパラメータを設定してください。
URL_SCHEME=com.firebase.cordova

Androidデバッグビルドでビルドします。
さらに、そのビルドされたapkの”署名証明書SHA-1”を取得します。
私は以下の手順で取得しています。
1.Monacaのビルドログから最新のapkをPCにダウンロード
2.以下のコマンドで証明書を確認しています。

keytool -list -printcert -jarfile xxx.apk

ここで表示されたSHA1の値をコピーしておいてください。

#FirebaseにAndroidアプリの設定を追加する
またFirebaseに戻って、今度はAndroidの実機からSNS認証を使えるようにする設定です。

「Project Overview」から「AndroidアプリにFirebaseを追加」をクリックしてください。

ここで先ほどコピーしたSHA1の値をペーストします。

パッケージ名はMonacaに設定してあるパッケージ名に合わせてください。

「アプリを登録」をクリックして、「設定ファイルのダウンロード」と「FirebaseSDKの追加」は無視して次へ。
最後の確認も長いのでスキップしちゃって良いです。

最後にDynamic Linksの設定を行います。
「Dynamic Links」の「始める」をクリックしてください。

サブドメインを任意で決めて入力して作成を行ってください。
このドメインも使用するのでコピーしておいてください。

以上で準備は完了です。
ここまでものすごく長いですよね;お疲れ様でした。

いよいよプログラムのほうに掛かります。

#Monacaのアプリに認証プログラムを追加する
config.xmlを開いて、以下の設定を追加します。

config.xml
<universal-links>
    <host name="DYNAMIC_LINK_DOMAIN" scheme="https" />
    <host name="AUTH_DOMAIN" scheme="https">
        <path url="/__/auth/callback"/>
    </host>
</universal-links>

DYNAMIC_LINK_DOMAINを、さっきコピーしたDynamic Linksのドメインに書き換えます。
AUTH_DOMAINは前回の記事でapp.jsの一番最初に追加したconfigのauthDomainの値で書き換えます。

次にapp.jsにプログラムを追加します。
私の場合はAngularJSのコントローラに追加してログインボタンから呼び出しています。

app.js
  this.login = function(){
    var provider = new firebase.auth.FacebookAuthProvider();
    
    // Facebookに飛んで認証を要求する
    firebase.auth().signInWithRedirect(provider)
      .then(function(){
        // Facebookから返ってきたら結果を取得
        firebase.auth().getRedirectResult()
          .then(function(result){
            // ログインに成功した
            var token = result.credential.accessToken;
            var user = result.user;
            alert(JSON.stringify(user));
          })
          .catch(function(error){
            // ログイン失敗
            alert(JSON.stringify(error));
          });
      });
  };

以上で完了です。
Androidデバッグビルドでビルドしてから、実機にインストールして確認してみてください。
※カスタムビルドデバッガーではありません。
※カスタムビルドデバッガーだと認証のリダイレクトが上手くいかないです。

ユーザー情報がアラートダイアログに表示されたら成功です。

FirebaseのAuthenticationのページを見てみると
今ログインしたアカウントが追加されているハズ。

設定だけでかなりのボリュームだったので今回はここまでです。
次回はCloud Firestoreへの書き込みとロックモードをやってみます。

ありがとうございました(^^

6
3
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?