Photon Facebook Authentication
伺服器端
Facebook應用程序的設置
首先,我們需要創建一個Facebook應用程序,如果您還沒有。
- 進入Facebook開發者網站。
- 點擊 Apps -> Create a New App ,輸入您的應用程序的名稱,然後按 Create App 按鈕。
- 選擇 Apps -> [your_app] 並復制 App ID 和 App Secret。
Photon配置
- 開啟 "deploy\NameServer\bin\NameServer.xml.config"。
- 確保CustomAuth被啟用,Enabled需要為true。
- 根據您的需要,可以選擇將AllowAnonymous設置為true或false。
我們建議將其設置為false。 - 將AuthenticationType設置為 "2",這是Facebook認証提供者類型的代碼。
- 選擇您想要的任何名字,我們在這個例子中使用了 "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),並發送一個有效的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