server | v5 switch to v4  

Photon Facebook Authentication

Contents

伺服器端

Facebook應用程序的設置

首先,我們需要創建一個Facebook應用程序,如果您還沒有。

  • 進入Facebook開發者網站。
  • 點擊 Apps -> Create a New App ,輸入您的應用程序的名稱,然後按 Create App 按鈕。
  • 選擇 Apps -> [your_app] 並復制 App IDApp Secret

Back To Top

Photon配置

  • 開啟 "deploy\NameServer\bin\NameServer.xml.config"。
  • 確保CustomAuth被啟用,Enabled需要為true。
  • 根據您的需要,可以選擇將AllowAnonymous設置為true或false。 我們建議將其設置為false。
  • 將AuthenticationType設置為 "2",這是Facebook認証提供者類型的代碼。
  • 選擇您想要的任何名字,我們在這個例子中使用了 "Facebook",但您可以更改。
  • 必需將 "AuthUrl "留空,但我們不需要使用它,因為認証端點是內部的。
  • 將AppId和Secret設置為您從Facebook開發者門戶為您的Facebook應用獲得的值。
  <CustomAuth Enabled="true" AllowAnonymous="false">
    <AuthProviders>
      <AuthProvider Name="Facebook"
                    AuthenticationType="2"
                    AuthUrl=""
                    Secret="Val1"
                    AppId="Val2" />
    </AuthProviders>
  </CustomAuth>

Back To Top

客戶端代碼

客戶端需要設置正確的認証類型(Facebook,2),並發送一個有效的Facebook令牌作為名為 "令牌 "的查詢字符串參數。

Back To Top

PUN

  • 打開Unity。
  • 導入
  • 設置PUN
  • 導入Facebook SDK for Unity
  • 在Unity的主選單中,進入Facebook -> Edit Settings,為您的Facebook應用程序輸入App NameApp Id

Back To Top

執行

創建一個新的MonoBehaviour,將其附加到場景中的一個對象上,然後打開。 使用下面的代碼進行Facebook的初始化和登錄:

// 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認証,請添加:

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回調是:

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);
    }
}


To Document Top