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

Facebook Authentication

內容

Overview

In this tutorial we will create a photon unity networking (pun) project with Facebook custom authentication.

 

回到首頁
 

Facebook Application Setup

First, we need to create a Facebook application.

  • Go to Facebook Developers website.
  • Click Apps -> Create a New App , enter the name of your app and press Create App button.
  • Choose Apps -> [your_app] and copy App ID and App Secret

 

回到首頁
 

Photon Dashboard Setup

  • Open Photon Dashboard.
  • Select the App Id that will be used and click See Details.
  • Navigate to Authentication tab and uncheck Allow anonymous clients to connect, independently of configured providers.
  • Select Facebook authentication provider and paste App ID and Secret.
  • Check Reject all clients if not available.

 

回到首頁
 

PUN Setup

 

回到首頁
 

Implementation

Create a new MonoBehaviour, attach it to an object in the scene and then open it. Use the following code for Facebook initialization and login:

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

To use Facebook Authentication in PUN, add:

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

The PUN callbacks for success and error that you can implement are:

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

Note: it's recommended to derive your class from MonoBehaviourPunCallbacks in order to simply override the callbacks you need.

回到首頁
 

Conclusion

In this tutorial we covered the basic steps required for integration of Facebook API with PUN.
Still have some questions? You are extremely welcome to ask it on forum. Happy coding!

To Document Top