This document is about: SERVER 5
SWITCH TO

Photon Steam Authentication

伺服器配置

  • 打開 "deploy\NameServer\bin\NameServer.xml.config"。
  • 確保CustomAuth被啟用,Enabled需要為true。
  • 根據您的需要,可以選擇將AllowAnonymous設置為true或false。 我們建議將其設置為false。
  • 將AuthenticationType設置為 "1",這是Steam認証提供者類型的代碼。
  • 選擇您想要的任何名字,我們在這個例子中使用了 "Steam",但您可以更改。
  • 必需留空AuthUrl ",但我們不需要使用它,因為認証端點是內部的。
  • 下面是其他Steam特定任務設置的列表及其說明:

XML

  <CustomAuth Enabled="true" AllowAnonymous="false">
    <AuthProviders>
      <AuthProvider Name="Steam"
                    AuthenticationType="1"
                    AuthUrl=""
                    apiKeySecret="Val1"
                    appid="Val2"
                    verifyOwnership="true"
                    verifyVacBan="true"
                    verifyPubBan="true" />
    </AuthProviders>
  </CustomAuth>
  • apiKeySecret:Steam發行商網絡API密鑰。不要把它與Steam用戶密鑰混淆。請閱讀更多關於如何獲取點此
  • appid:Steam遊戲的ID。您可以在通過Steam Direct程序(以前稱為Steam Greenlight)後得到一個。
  • verifyOwnership:可以是truefalse:是否在認証過程中啟用所有權驗証。 這允許您驗証用戶是否真的擁有(購買了遊戲並在他的資料庫中)該遊戲。 這個步驟,如果啟用,將在驗証用戶的會話票後執行。 啟用這個功能可能會在驗証中增加額外的延遲,所以只有在您真的需要時才啟用它。
  • 驗証VacBan:可以是truefalse。在認証過程中是否檢查用戶是否被Valve的反作弊(VAC)禁止。 閱讀更多 點此。 啟用這個功能可能會增加認証的延遲,所以只有在真正需要時才啟用。
  • 驗証PubBan:可以是truefalse。在認証過程中是否檢查用戶是否被禁止使用發布者禁令。 閱讀更多 點此。 啟用這個功能可能會在認証中增加額外的延遲,所以只有在真正需要的時候才啟用它。

客戶端代碼 (Unity)

客戶端必須使用Valve的Steamworks API來獲得一個會話票。 這個票據可以証明客戶端是一個有效的Steam用戶。

Steamworks.NET

Steamworks.NET是一個流行的免費開源的Steamworks API包裝器。 按照本頁面列出的說明導入Unity版本的Steamworks.NET。

獲取票據

使用下面的代碼,使用Steamworks API獲得一個會話票,並將其轉換為十六進制編碼的UTF-8字符串:

C#

// hAuthTicket should be saved so you can use it to cancel the ticket as soon as you are done with it
public string GetSteamAuthTicket(out HAuthTicket hAuthTicket)
{
    byte[] ticketByteArray = new byte[1024];
    uint ticketSize;
    hAuthTicket = SteamUser.GetAuthSessionTicket(ticketByteArray, ticketByteArray.Length, out ticketSize);
    System.Array.Resize(ref ticketByteArray, (int)ticketSize);
    StringBuilder sb = new StringBuilder();
    for(int i=0; i < ticketSize; i++)
    {
        sb.AppendFormat("{0:x2}", ticketByteArray[i]);
    }
    return sb.ToString();
}

發送票據

客戶端必須將用戶的會話票(在轉換為十六進制編碼的UTF-8字符串後)作為查詢字符串鍵 "ticket "的值發送。

取消票據

建議在認証完成後取消或撤銷票據。

Facepunch.Steamworks

Facepunch.Steamworks是Steamworks API的另一個免費和開源的實現。 按照本頁所列的說明來導入Facepunch.Steamworks。

獲取票據

使用下面的代碼來獲取一個會話票據,並將其轉換為十六進制編碼的UTF-8字符串:

C#

// authTicket should be saved so you can use it to cancel the ticket as soon as you are done with it
public string GetSteamAuthTicket(out AuthTicket authTicket)
{
    authTicket = SteamUser.GetAuthSessionTicket();
    StringBuilder ticketString = new StringBuilder();
    for (int i = 0; i < authTicket.Data.Length; i++)
    {
        ticketString.AppendFormat("{0:x2}", authTicket.Data[i]);
    }
    return ticketString.ToString();
}

發送票據

客戶端必須將用戶的會話票(在轉換為十六進制編碼的UTF-8字符串後)作為查詢字符串鍵 "ticket "的值發送。

取消票據

建議在認証完成後取消或撤銷票據。

Back to top