Документация Steamworks
OAuth
Протокол OAuth позволяет партнёрским сайтам и приложениям на сторонних платформах безопасно выполнять определённые действия от лица пользователей Steam после их аутентификации.

Чтобы использовать OAuth, вам сначала нужно получить клиентский ID от Valve. Подробнее об этом в секции «Подготовка к работе».

Для некоторых API OAuth также требуется издательский веб-API-ключ, чтобы подтвердить, что вы являетесь партнёром Steam. Эти API можно вызвать только с ваших серверов, так как ключ нельзя сообщать клиентам. Такие API определяются по наличию параметра key.

В следующих службах веб-API есть методы, использующие OAuth: ICloudService, IBroadcastService, IGameNotificationsService, IPlayerService и IPublishedFileService.

Для примера мы будем использовать http://redirect/uri/here в качестве URI для переадресации.

Подготовка к работе


Реализация Steam основана на OAuth версии 2.0.
Во время подготовки вам нужно будет сообщить Valve следующую информацию:
  • Какие разрешения вы хотите получить. Эти разрешения перечисляются пользователю при каждом вызове API; Обратите внимание, что если вы не планируете поддержку кроссплатформенной облачной синхронизации или мастерской, мы не сможем предоставить клиентский ID.
  • Время действия токена;
  • URI переадресации, который возвратит пользователя после аутентификации и входа в аккаунт.
В ответ Valve назначит вашему сервису клиентский ID.

Чтобы аутентифицировать пользователя, направьте его по ссылке

https://steamcommunity.com/oauth/login?response_type=&client_id=&state=

Для встроенных браузеров рекомендуем добавить к запросу выше параметр &mobileminimal=1. Он скрывает часть интерфейса сайта Steam, не нужную пользователю на странице OAuth внутри игры.

Если вы включите в запрос параметр state, он будет передан обратно по адресу перенаправления после того, как пользователь предоставит доступ или откажет в нём. Также поддерживается предоставление доступа через код авторизации. Для этого при входе используйте команду response_type=code.

Если пользователь получит доступ, он будет перенаправлен к вам по ссылке

http://redirect/uri/here#access_token=&token_type=steam&state=

Токен нужно считать строкой непрозрачного типа. Сейчас токены являются шестнадцатеричными строками из 32 символов, но это может измениться. Этот API также включает более не используемый параметр SteamID, который нужно игнорировать. Пожалуйста, обратитесь к разделу «Получение SteamID пользователя» ниже, чтобы узнать, как безопасно получить SteamID пользователя.

Если пользователь не предоставит доступ, он будет перенаправлен к вам по ссылке

http://redirect/uri/here#error=access_denied&state=

Обратите внимание, что ответ (включая токен) передаётся в виде URI-фрагмента. Если вам нужно делать запросы со стороны сервера, получите ответ от клиента и передайте его обратно серверу.

Получив токен пользователя, вы сможете совершать API-запросы (см. ниже).
Все запросы, кроме перечисленных ниже, должны быть HTTP-запросами метода POST, представленными как данные формы со следующим заголовком:

Content-Type: application/x-www-form-urlencoded

Получение SteamID пользователя

Получив токен OAuth пользователя, вы можете совершить вызов от сервера к серверу, чтобы безопасно получить SteamID пользователя по этому токену:

https://api.steampowered.com/ISteamUserOAuth/GetTokenDetails/v1/?access_token=

Доступ к Steam Cloud


Чтобы получить доступ к Steam Cloud от лица пользователя, вашему клиенту OAuth потребуется разрешение read_cloud и/или write_cloud.
Эти разрешения ограничиваются по AppID, так что при создании клиентского ID обязательно укажите все необходимые AppID.

Получив токен OAuth, используйте веб-API Steam ICloudService.

Доступ к мастерской Steam


Чтобы получить доступ к мастерской Steam от лица пользователя, вашему клиенту OAuth потребуется разрешение read_cloud и/или write_cloud.
Эти разрешения ограничиваются по AppID, так что при создании клиентского ID обязательно укажите все необходимые AppID.

Получив токен OAuth, используйте веб-API Steam IPublishedFileService.