> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Steam과 Unity를 사용하여 PlayFab 인증 설정하기

> PlayFab SDK와 Steamworks를 사용해 Unity 게임에 Steam 로그인을 추가하는 단계별 튜토리얼로 AppID 설정과 플레이어 인증 코드를 다룹니다.

이 튜토리얼에서는 **SteamWorks**와 Unity를 통해 Steam을 사용하여 PlayFab에 로그인하는 단계를 안내합니다.

## 사전 요구 사항

시작하기 전에 다음이 필요합니다.

* 임포트된 PlayFab SDK와 구성된 타이틀 ID가 있는 Unity 프로젝트.
* 다음을 갖춘 Steam 애플리케이션:
  * 이미 설정된 AppID. AppID는 [Steam Direct(이전 Greenlight)](https://partner.steamgames.com/steamdirect) 프로세스를 통해 획득할 수 있습니다.
  * Steam Publisher Web API Key. 게시자 키를 생성하려면 **Steamworks** 문서의 [Publisher Web API Key 생성](https://partner.steamgames.com/doc/webapi_overview/auth#create_publisher_key)을 따르세요.
* [로그인 기본 사항 및 모범 사례](/services/playfab/identity/player-identity/login/login-basics-best-practices)에 대한 이해.

## Steam 통합으로 PlayFab 타이틀 설정

Steam 승인 지원을 활성화하려면 PlayFab에서 Steam 애드온을 활성화해야 합니다.

**Game Manager** 페이지로 이동합니다.

1. **Add-ons** 메뉴 항목을 선택합니다.
2. 사용 가능한 **Add-ons** 목록에서 **Steam**을 찾아 타이틀 링크를 선택합니다.

<img src="https://mintcdn.com/microsoft-4404708b/mLCHf0iQv3VidfBe/images/playfab/identity/player-identity/platform-specific-authentication/tutorials/steam-unity/game-manager-addons-tab-steam.png?fit=max&auto=format&n=mLCHf0iQv3VidfBe&q=85&s=0a73a84c8672d5d3b437e64503483f1d" alt="Game Manager Add-ons 탭" width="608" height="681" data-path="images/playfab/identity/player-identity/platform-specific-authentication/tutorials/steam-unity/game-manager-addons-tab-steam.png" />

1. **App ID**를 입력합니다.
2. **Web API Key**를 입력합니다.
3. 그런 다음 **Install Steam**을 선택합니다.

<img src="https://mintcdn.com/microsoft-4404708b/mLCHf0iQv3VidfBe/images/playfab/identity/player-identity/platform-specific-authentication/tutorials/steam-unity/game-manager-install-steam-addon.png?fit=max&auto=format&n=mLCHf0iQv3VidfBe&q=85&s=dfdcfff9e84cdabbe596107ad25e3822" alt="Game Manager Steam Add-on 설치" width="1100" height="935" data-path="images/playfab/identity/player-identity/platform-specific-authentication/tutorials/steam-unity/game-manager-install-steam-addon.png" />

## Unity 프로젝트 설정

[Releases 페이지](https://github.com/rlabrecque/Steamworks.NET/releases)에서 Steamworks.NET의 최신 릴리스를 다운로드하여 시작합니다.

* 릴리스의 Unity Package 버전을 가져와서 프로젝트로 임포트합니다.
* 패키지를 임포트한 후 Unity를 닫습니다.
* **프로젝트** 루트 폴더로 이동합니다.
* **steam\_appid.txt** 파일을 찾습니다.
* 파일을 열고 **App ID** 값을 자신의 것으로 교체합니다.

<img src="https://mintcdn.com/microsoft-4404708b/mLCHf0iQv3VidfBe/images/playfab/identity/player-identity/platform-specific-authentication/tutorials/steam-unity/unity-project-update-appid.png?fit=max&auto=format&n=mLCHf0iQv3VidfBe&q=85&s=080b41d817e52a1728413f63da857637" alt="Unity 프로젝트 - AppId 업데이트" width="391" height="281" data-path="images/playfab/identity/player-identity/platform-specific-authentication/tutorials/steam-unity/unity-project-update-appid.png" />

Unity를 다시 열고 새 씬을 만듭니다.

해당 씬 안에서 **Steam**이라는 새 **GameObject**를 만듭니다.

1. **GameObject**에 **SteamManager** 컴포넌트를 추가합니다. 이 컴포넌트는 Steamworks.Net의 일부입니다.
2. **GameObject**에 **SteamScript** 컴포넌트를 생성하고 추가합니다.

<img src="https://mintcdn.com/microsoft-4404708b/mLCHf0iQv3VidfBe/images/playfab/identity/player-identity/platform-specific-authentication/tutorials/steam-unity/unity-project-add-steam-object.png?fit=max&auto=format&n=mLCHf0iQv3VidfBe&q=85&s=125456b765664eca5ae44b75c48aa9fc" alt="Unity 프로젝트 - Steam 오브젝트 추가" width="778" height="385" data-path="images/playfab/identity/player-identity/platform-specific-authentication/tutorials/steam-unity/unity-project-add-steam-object.png" />

다음 예제는 `SteamScript` 컴포넌트의 코드를 보여줍니다.

```csharp theme={null}
using System.Text;
using PlayFab;
using PlayFab.ClientModels;
using Steamworks;
using UnityEngine;

public class SteamScript : MonoBehaviour
{
    protected Callback<GetTicketForWebApiResponse_t> m_OnGetSteamAuthTicket;

    // Alternatively, you can use this callback if you choose to call SteamUser.GetAuthSessionTicket(...) instead
    // TicketIsServiceSpecific in the PlayFabLoginRequest should be false in this case
    // protected Callback<GetAuthSessionTicketResponse_t> m_OnGetSteamAuthTicketAlternate;

    private HAuthTicket m_hTicket;

    public void Awake()
    {
        m_OnGetSteamAuthTicket = Callback<GetTicketForWebApiResponse_t>.Create(OnGetSteamAuthTicket);
    }
    
    public void OnGUI()
    {
        if (GUILayout.Button("Log In") && SteamManager.Initialized)
        {
            GetSteamAuthTicket();
        }
    }

    private void GetSteamAuthTicket()
    {
        m_hTicket = SteamUser.GetAuthTicketForWebApi("AzurePlayFab");

        if (m_hTicket == HAuthTicket.Invalid)
        {
            Debug.Log("Failed to request steam auth ticket");
        }
        else
        {
            Debug.Log("Steam auth ticket requested");
        }
    }

    private void OnGetSteamAuthTicket(GetTicketForWebApiResponse_t pCallback)
    {
        Debug.Log("Steam auth ticket callback invoked");

        if (pCallback.m_eResult != EResult.k_EResultOK)
        {
            Debug.Log("Failed to get steam auth ticket: " + pCallback.m_eResult);
        }

        StringBuilder sb = new();
        for (int i = 0; i < pCallback.m_cubTicket; ++i)
        {
            sb.AppendFormat("{0:x2}", pCallback.m_rgubTicket[i]);
        }

        PlayFabClientAPI.LoginWithSteam(new LoginWithSteamRequest
        {
            CreateAccount = true,
            SteamTicket = sb.ToString(),
            TicketIsServiceSpecific = true
        }, OnComplete, OnFailed);
    }

    private void OnComplete(LoginResult obj)
    {
        SteamUser.CancelAuthTicket(m_hTicket);
        Debug.Log("Success!");
    }

    private void OnFailed(PlayFabError error)
    {
        SteamUser.CancelAuthTicket(m_hTicket);
        Debug.Log("Failed PlayFab login: " + error.GenerateErrorReport());
    }
}
```

## 테스트

에디터 내에서 바로 테스트할 수 있습니다.

1. 씬을 실행하고 **Log In** 버튼을 선택합니다.
2. 잠시 후 인증 결과 \*\*Success!\*\*를 나타내는 콘솔 메시지가 나타나야 합니다.

<img src="https://mintcdn.com/microsoft-4404708b/mLCHf0iQv3VidfBe/images/playfab/identity/player-identity/platform-specific-authentication/tutorials/steam-unity/unity-test-playfab-login-with-steam.png?fit=max&auto=format&n=mLCHf0iQv3VidfBe&q=85&s=f5eafa1a09fb3673c292a617c027c69e" alt="Unity에서 Steam으로 PlayFab 로그인 테스트" width="398" height="408" data-path="images/playfab/identity/player-identity/platform-specific-authentication/tutorials/steam-unity/unity-test-playfab-login-with-steam.png" />


## Related topics

- [Facebook과 Unity를 사용하여 PlayFab 인증 설정하기](/ko/services/playfab/identity/player-identity/platform-specific-authentication/facebook-unity.md)
- [Google과 HTML5를 사용하여 PlayFab 인증 설정하기](/ko/services/playfab/identity/player-identity/platform-specific-authentication/google-html5.md)
- [Facebook과 HTML5를 사용하여 PlayFab 인증 설정하기](/ko/services/playfab/identity/player-identity/platform-specific-authentication/facebook-html5.md)
- [Kongregate와 Unity를 사용하여 PlayFab 인증 설정하기](/ko/services/playfab/identity/player-identity/platform-specific-authentication/kongregate-unity.md)
- [PlayFab용 Battle.net 로그인 설정하기](/ko/services/playfab/identity/player-identity/platform-specific-authentication/battlenet-login.md)
