Facebook認証を用いたカスタム認証

このチュートリアルでは、Photon Custom Authenticationを使ってFacebook認証からPhoton Cloudアプリケーション内でユーザを認証する方法を説明します。

概要

Photon Cloud Custom Authenticationでは外部サービス(Authentication Provider)を呼び出してユーザの認証を確認します。 認証のフローの概要はドキュメントをご確認ください。

認証が必要なサービスによって異なりますが、通常、認証の確認には複数のパラメータが必要です。これはPhoton Cloud Applicationで設定されている静的パラメータと、Photon Cloud JavaScript Client APIコールでパスされる動的パラメータです。このチュートリアルではクライアントサイドのFacebook Login pluginプラグインを使用してユーザのFacebookトークンを取得し、https://customauth.photonengine.com/facebook からAuthentication Providerを得て、トークンの有効性をマスタサーバサイドで確認します。Facebookの認証の場合、Authentication Providerにappidsecret 及び tokenパラメータが必要です。Facebookにて、AppIDのアプリケーションに対してトークンが有効か確認されます。

実装

既存のアプリケーションでCustom Authenticationを有効にするステップは以下のとおりです:

1. Facebook App設定

Facebook Appの設定に関する詳細はFacebookドキュメントをご確認ください。このチュートリアルではFacebook App IDApp Secretが必要です。

2. Photon Cloud アプリケーション

Photon Cloud Dashboardからアプリケーションの詳細ページに移行してください。Custom Authenticationセクションを拡張してください。Facebook認証に使うAuthentication URLはExit Gamesが設定します。

以下2つのパラメータの値を設定してください:

  • appid = あなたの Facebook App ID
  • secret = あなたの Facebook App Secret

変更を保存して下さい。

3. HTML5/JavaScript クライアント

クライアントはAdd a Facebook Loginボタンdivをhtmlドキュメントの本体のどこかに設置する必要があります。

    <div class="fb-login-button" data-show-faces="true" data-width="400" data-max-rows="1" data-registration-url=""></div>

Facebook JavaScript SDK読み込み, Facebook Login ボタン作成, Facebook認証ステータス処理のコードを追加してください。<body>開始タグの直後が理想的です。

    <div id="fb-root"></div>
    <script>
        window.fbAsyncInit = function () {
            FB.Event.subscribe('auth.authResponseChange', function (response) {
                if (response.status === "connected") {
                    loadBalancingClient.setCustomAuthentication("token=" + response.authResponse.accessToken, 2);
                    loadBalancingClient.connect(true);
                }
            });
        };

        (function (d, s, id) {
            var js, fjs = d.getElementsByTagName(s)[0];
            if (d.getElementById(id)) return;
            js = d.createElement(s); js.id = id;
            js.src = "https://connect.facebook.net/en_US/all.js#xfbml=1&appId=" + "<YOUR_APP_ID>";
            fjs.parentNode.insertBefore(js, fjs);
        }(document, 'script', 'facebook-jssdk'));
    </script>

このコードはFacebook JavaScript SDKを非同期的に読み込んでFacebook Loginボタンを作成します。読み込み完了後にwindow.fbAsyncInit関数が呼ばれます。Facebookのauth.authResponseChangeイベントでハンドラーをサブスクライブします。ユーザがFacebookログインに成功した後response.status = "connected"になり、auth.authResponseChangeは終了します。 ユーザのトークンはパラメータとしてハンドラーにパスされます。トークンを取得したハンドラーは クライアントをCustom Authenticationモードに設定して、認証URLにtokenパラメータを追加します。その後、ハンドラーがマスタサーバと通信を開始します。

4. デプロイと実行

Facebook App設定で指定されたApp DomainにHTML5 / JavaScriptクライアントコードを設置してください。これは、Facebook Loginボタンを正常に機能させるために必要です。

アプリケーションページにアクセスするユーザは、Facebook Loginボタンをクリックしてユーザ名とパスワードを入力した後、Photon Cloudにログインします。既にFacebookにログインしている場合はすぐにPhoton Cloudにサインインされます。

 ドキュメントのトップへ戻る