This document is about: PUN 2
SWITCH TO

PUN Classic (v1)、PUN 2 和 Bolt 處於維護模式。 PUN 2 將支援 Unity 2019 至 2022,但不會添加新功能。 當然,您所有的 PUN & Bolt 專案可以用已知性能繼續運行使用。 對於任何即將開始或新的專案:請切換到 Photon Fusion 或 Quantum。

Photon Facebook Authentication

伺服器端

Facebook應用程序的設置

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

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

Photon配置

通過您的Photon Cloud Dashboard進入您的應用程序的Details頁面。
展開自定義認証部分。
Facebook認証的Authentication URL是由Exit Games設置的。

設置這兩個參數的值:

  • appid = your Facebook App ID
  • secret = your Facebook App Secret

儲存更改。

客戶端代碼

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

PUN

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