Integracja Steam: logowanie przez Steam i Steam Web API
Gracz loguje się na stronie serwera kontem Steam, bez nowego hasła. Jego SteamID łączy konto na stronie z kontem w grze, a Steam Web API dostarcza nick, awatar, czas gry i informacje o banach. Na tej podstawie działają panel, itemshop i nagrody.
Steam jako dostawca logowania
Steam obsługuje OpenID 2.0. Po zalogowaniu strona dostaje 64-bitowe SteamID gracza i nic więcej.
Steam oddaje tylko identyfikator
64-bitowy numer konta na końcu identyfikatora, który wraca ze Steam po zalogowaniu.
- formathttp://steamcommunity.com/openid/id/<steamid>
Profil to osobne zapytanie
…powinna być używana tylko wtedy, gdy Twoja strona musi wyświetlać informacje o użytkowniku.
Gracz wie, czego strona nie dostanie

Przed logowaniem sklep mówi wprost: SteamID, nick i awatar, czas gry, jeśli profil go pokazuje. Hasła i e-maila strona nie dostaje.
Logowanie przez Steam krok po kroku
Najważniejszy jest krok weryfikacji. Parametry w adresie powrotu przychodzą od przeglądarki gracza, więc nie można im ufać, dopóki Steam ich nie potwierdzi.
- klika "Zaloguj przez Steam"
Gracz
Powrót na nasz adres
Odpowiedź musi wracać na nasz adres, a nie na podstawiony.
Potwierdzenie u źródła
Bezpośrednia weryfikacja z OpenID 2.0: te same parametry odsyłamy do Steam z trybem check_authentication. SteamID z adresu bez potwierdzenia przez Steam można podrobić jedną zmianą w URL.
Konto dopiero po potwierdzeniu
Dopiero po potwierdzeniu odczytujemy SteamID i łączymy z kontem. Nick, awatar i bany przychodzą wtedy ze Steam Web API, a klucz do niego zostaje na serwerze.
- SteamID, nick, awatar i bany
Konto na stronie
Co łączy SteamID na stronie i w grze
Jedno konto gracza we wszystkich miejscach.
76561190000001184 · Gracz 03 · 312 h · VAC: brak · VIP
76561190000001184 · Gracz 03 · 312 h · VAC: brak Steam → strona, panel, serwer gry
VIP w obie strony
Tożsamość gracza
Logowanie przez Steam.
Nick i awatar
Logowanie i odświeżenie raz na jakiś czas.
Czas gry
Zadanie okresowe, jeśli profil to pokazuje.
Bany
Logowanie albo wejście na serwer.
Zakupy z itemshopu
Płatność na stronie: przedmiot lub ranga trafia na serwer po SteamID.
SteamID jako klucz
Na serwerach gier SteamID jest zwykle już kluczem w bazie: w uprawnieniach, statystykach i banach. Dlatego połączenie strony z grą przez SteamID jest naturalne i nie wymaga od gracza wpisywania kodów.
Profile prywatne
Czas gry jest dostępny tylko przy widocznych danych. Nagrody za czas gry mają jasny komunikat, gdy profil je ukrywa.
Metody Steam Web API, z których korzystamy
Dane o graczu po zalogowaniu. Część zależy od ustawień prywatności profilu.
Wywołania Steam Web API na dobę
Limit z warunków korzystania z klucza.
GetPlayerSummaries SteamID w zapytaniu
Nick, awatar, adres profilu, widoczność, do 100 graczy naraz.
ISteamUser/GetPlayerSummaries v2Nick, awatar, adres profilu, widoczność, do 100 graczy naraz. Profil w panelu i rankingu.IPlayerService/GetOwnedGamesGry i czas gry, jeśli są widoczne. Nagrody za czas gry.ISteamUser/GetPlayerBansBany VAC i w grach, dni od ostatniego bana. Decyzje o dostępie do serwera.IPlayerService/GetSteamLevelPoziom konta Steam. Próg dla nowych kont, np. przy rozdaniach.ISteamUser/CheckAppOwnershipCzy gracz posiada daną grę. Tylko dla wydawcy gry, z kluczem wydawcy.
Co przesuwa zużycie limitu
Pamięć podręczna profili
Przy 100 000 wywołań dziennie odpytywanie Steam przy każdym wyświetleniu strony szybko kończy limit.
Zbiorcze zapytania
GetPlayerSummaries przyjmuje do 100 SteamID naraz, więc odświeżamy ranking paczkami.
Zapytanie przy każdym wyświetleniu
Bez pamięci podręcznej każde wyświetlenie profilu albo rankingu to osobne wywołanie Steam.
Najczęstsze pytania o integrację ze Steam
Odpowiedzi o e-mailu gracza, logowaniu przez Discord, kluczu Web API i wycenie.
Czytaj dalej
Inne integracje dla serwerów gier.
Chcesz logowania przez Steam na stronie serwera?
Napisz, jaką masz grę i co ma się dziać po zalogowaniu. Odpowiemy w godzinę z pytaniami i wyceną.

