This document is about: SERVER 5
SWITCH TO

Photon Facebook認証

サーバー側

Facebookアプリの設定

まず、Facebookアプリケーションがない場合は作成してください。

  • [Facebook Developers](https://developers.facebook.com)ウェブサイトにアクセスします。
  • Apps-> Create a New App をクリックし、アプリの名前を入力して Create App ボタンを押します。
  • Apps-> *[your_app]*を選択し、App IDApp Secretをコピーします。

Photon 構成

  • "deploy\NameServer\bin\NameServer.xml.config"を開きます。
  • CustomAuthが有効になっていることを確認します。Enabledはtrueである必要があります。
  • 必要に応じて、AllowAnonymousをtrueまたはfalseに設定します。
    falseに設定することをお勧めします。
  • AuthenticationTypeをFacebook認証プロバイダータイプのコードである "2"に設定します。
  • 任意の名前を選択します。この例では「Facebook」を使用しましたが、変更できます。
  • 「AuthUrl」は必須なので空のままにしますが、認証エンドポイントは内部にあるため必要ありません。
  • AppIdとSecretを、Facebook開発者ポータルから取得したFacebookアプリの値に設定します。

XML

  <CustomAuth Enabled="true" AllowAnonymous="false">
    <AuthProviders>
      <AuthProvider Name="Facebook"
                    AuthenticationType="2"
                    AuthUrl=""
                    Secret="Val1"
                    AppId="Val2" />
    </AuthProviders>
  </CustomAuth>

クライアントコード

クライアントは正しい認証タイプ(Facebook、2)を設定し、「token」という名前のクエリ文字列パラメーターとして有効なFacebookトークンを送信する必要があります。

PUN

  • Unityを開きます。
  • インポート
  • PUNを設定
  • Facebook SDK for Unityをインポートします。
  • Unityのメインメニューで Facebook -> Edit Settings に移動し、Facebookアプリケーションの App Name および App Id を入力します。

実装

新しいMonoBehaviourを作成し、シーン上のオブジェクトにアタッチしてから開きます。
Facebookの初期化とログインに次のコードを使用します。

C#

// Include Facebook namespace
using Facebook.Unity;

// [..]

private void Awake()
{
    if (!FB.IsInitialized)
    {
        // Initialize the Facebook SDK
        FB.Init(InitCallback);
    }
    else
    {
        FacebookLogin();
    }
}

private void InitCallback()
{
    if (FB.IsInitialized)
    {
        FacebookLogin();
    }
    else
    {
        Debug.Log("Failed to initialize the Facebook SDK");
    }
}

private void FacebookLogin()
{
    if (FB.IsLoggedIn)
    {
        OnFacebookLoggedIn();
    }
    else
    {
        var perms = new List<string>(){"public_profile", "email", "user_friends"};
        FB.LogInWithReadPermissions(perms, AuthCallback);
    }
}

private void AuthCallback(ILoginResult result)
{
    if (FB.IsLoggedIn)
    {
        OnFacebookLoggedIn();
    }
    else
    {
        Debug.LogErrorFormat("Error in Facebook login {0}", result.Error);
    }
}

PUNでFacebook認証を使用するには、以下を追加します。

C#

private void OnFacebookLoggedIn()
{
    // AccessToken class will have session details
    string aToken = AccessToken.CurrentAccessToken.TokenString;
    string facebookId = AccessToken.CurrentAccessToken.UserId;
    PhotonNetwork.AuthValues = new AuthenticationValues();
    PhotonNetwork.AuthValues.AuthType = CustomAuthenticationType.Facebook;
    PhotonNetwork.AuthValues.UserId = facebookId; // alternatively set by server
    PhotonNetwork.AuthValues.AddAuthParameter("token", aToken);
    PhotonNetwork.ConnectUsingSettings("1.0");
}

実装できる成功とエラーのPUNコールバックは次のとおりです。

C#

public class FacebookAuthTest : MonoBehaviourPunCallbacks
{
    public override void OnConnectedToMaster()
    {
        Debug.Log("Successfully connected to Photon!");
    }

    // something went wrong
    public override void OnCustomAuthenticationFailed(string debugMessage)
    {
        Debug.LogErrorFormat("Error authenticating to Photon using facebook: {0}", debugMessage);
    }
}

Back to top