PUN Classic (also called PUN1) is the original and first major version of PUN. It is now replaced by PUN2 which is refactored and enhanced. We highly recommend starting new projects with PUN2 and if possible migrating existing ones from PUN1 to PUN2 by following our "Migration Notes". PUN Classic will be maintained for the coming months. We will fix important bugs and support new Unity versions but new features will be added only to PUN2.

Photon Steam認証

Contents

アプリケーションのセットアップ

Steamは認証プロバイダとして簡単に追加でき、 追加はPhotonアプリケーションのダッシュボードから数秒で設定できます。 アプリケーションの「管理」ページに進み、「認証」セクションにスクロールダウンしてください。

新たな認証プロバイダをSteamに追加する場合、または既存の認証プロバイダを編集する場合には、以下の設定が必須です:

  • apiKeySecret: SteamパブリッシャーWeb APIのキーです。取得の方法はこちらを参照してください。
  • appid: SteamゲームのID。Steam Directの処理後(旧 Steam Greenlight)にこのIDを取得できます。
  • verifyOwnership:trueまたはfalseの値となります:認証の際に所有権の検証を有効化するかを設定します。 これによって、ユーザーが本当にそのゲームを所有しているか(ゲームを購入し、ライブラリにそのゲームを所有しているか)を検証できます。 有効化されている場合には、この手順はユーザーのセッションチケットを認証後に実行されます。 これを有効化すると、認証が遅延する可能性があります。このため、本当に必要な場合のみ有効化してください。
  • verifyVacBan: trueまたはfalseの値となります: 認証の際にValveのAnti-Cheat (VAC)を使用し、ユーザーが禁止されたか確認を設定できます。 詳細はこちらを参照してください。 これを有効化すると、認証が遅延する可能性があります。このため、本当に必要な場合のみ有効化してください。
  • verifyPubBan: trueまたはfalseの値となります:認証の際にPublisher Banを使用し、ユーザーが禁止されたか確認を設定できます。 詳細はこちらを参照してください。 これを有効化すると、認証が遅延する可能性があります。このため、本当に必要な場合のみ有効化してください。

Back To Top

クライアントコード

クライアントは、セッションチケットを取得するためにValveのSteamworks APIを使用する必要があります。 このチケットは、そのクライアントが有効なSteamユーザーであることの証明です。

このページに記載された手順にしたがって、Steamworks.NETのUnityバージョンをインポートしてください。

Back To Top

チケットを取得

Steamworks APIを使用し、以下のコードでセッションチケットを取得してください。その後、そのチケットを16進暗号化UTF-8文字列に変換します:

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

Back To Top

チケットを送信

クライアントはユーザーのセッションチケット(16進暗号化UTF-8文字列に変換後)をクエリ文字列キー「チケット」の値として送信する必要があります。

PhotonNetwork.AuthValues = new AuthenticationValues();
PhotonNetwork.AuthValues.UserId = SteamUser.GetSteamID().ToString();
PhotonNetwork.AuthValues.AuthType = CustomAuthenticationType.Steam;
PhotonNetwork.AuthValues.AddAuthParameter("ticket", SteamAuthSessionTicket);
// do not set AuthValues.Token or authentication will fail
// connect

Back To Top

チケットをキャンセル

認証完了後に、チケットをキャンセルまたは無効化することを推奨します。

PUNの場合には最初のコールバックがトリガーされ、チケットは OnConnectedToPhotonでキャンセルできます:

private void OnConnectedToPhoton()
{
    SteamUser.CancelAuthTicket(hAuthTicket);
}

To Document Top