เอกสาร Steamworks
การยืนยันตัวตนและการเป็นเจ้าของของผู้ใช้

ภาพรวม

Steamworks จะเปิดให้ใช้กระบวนการยืนยันอัตลักษณ์ของผู้ใช้ Steam และการยืนยันการเป็นเจ้าของของแอปพลิเคชันหลากหลายรูปแบบ เอกสารดังต่อไปนี้จะลงรายละเอียดอธิบายกระบวนการยืนยันตัวตนต่าง ๆ ที่ใช้ในสถานการณ์ดังต่อไปนี้:

การระบุตัวตนของผู้ใช้ใน Steam

ผู้ใช้ Steam ทุกคนนั้น จะสามารถถูกระบุตัวตนกันได้อย่างไม่ซ้ำกันด้วยหมายเลขไอดีแบบ 64 บิต ที่เรียกว่า ไอดี Steam ใน Steamworks C++ API นั้น จะบรรจุ SteamID ของผู้ใช้เอาไว้ในออบเจ็กต์ CSteamID คุณสามารถเรียกรับ SteamID ของผู้ใช้ปัจจุบันได้ด้วยการเรียก ISteamUser::GetSteamID แล้วจากนั้นเรียกรับไอดี ประเภท 64 บิตได้ด้วยการเรียก CSteamID.ConvertToUint64() ลงไปบนค่าที่ได้รับคืนกลับมา

คุณจะสามารถใช้เมธอดการยืนยันตัวตนดังต่อไปนี้เพื่อยืนยันความถูกต้องของไอดี Steam ของผู้ใช้ได้

API ที่ได้รับการกล่าวถึงในเอกสารฉบับนี้

ตั๋วเซสชัน

ตั๋วเซสชันเป็นตั๋วที่ได้รับการลงนามที่สามารถนำไปใช้เพื่อตรวจสอบความถูกต้องของอัตลักษณ์ตัวตนของผู้ใช้ระหว่างไคลเอนต์เกมของผู้ใช้และไคลเอนต์เกมตัวอื่น ๆ ได้ (เช่น ในเซสชันผู้เล่นหลายคนแบบ peer-to-peer) หรือกับเซิร์ฟเวอร์เกมเฉพาะ (ด้วยการใช้ API ISteamGameServer) นอกจากนี้ยังสามารถใช้ตั๋วเหล่านี้เพื่อตรวจสอบความถูกต้องของสถานะการเป็นเจ้าของของเกมปัจจุบันและเนื้อหาดาวน์โหลดเสริมที่เกี่ยวข้องได้ รวมทั้งยังสามารถใช้เพื่อตรวจดูว่าผู้ใช้ได้ถูกแบนโดย VAC หรือไม่ (กรุณาอ่าน การแบนด้วยตัวป้องกันการโกงของ Valve (VAC) และเกมแบน)
และนอกจากนั้นยังสามารถใช้ตั๋วเซสชันเพื่อตรวจสอบความถูกต้องของอัตลักษณ์ของผู้ใช้ ระหว่างไคลเอนต์เกมและเซิร์ฟเวอร์ส่วนแบ็กเอนด์ที่ได้รับการดูแลความปลอดภัย ด้วยการใช้ Steamworks Web API กำหนดว่า เซิร์ฟเวอร์ที่ปลอดภัยสามารถส่งคำขอ HTTPS ไปยัง partner.steam-api.com ได้

ตั๋วแอปพลิเคชันที่ได้รับการเข้ารหัส

สามารถใช้ตั๋วแอปพลิเคชันที่ได้รับการเข้ารหัสเพื่อตรวจสอบความถูกต้องของอัตลักษณ์ของผู้ใช้ ระหว่างไคลเอนต์เกมและเซิร์ฟเวอร์ส่วนแบ็กเอนด์ที่ได้รับการดูแลความปลอดภัยได้ ตั๋วแอปพลิเคชันที่ได้รับการเข้ารหัสจะต่างจากตั๋วเซสชันตรงที่ การตรวจสอบความถูกต้องของตั๋วแอปพลิเคชันที่ได้รับการเข้ารหัสนั้น จะ ไม่ต้องใช้เซิร์ฟเวอร์ที่ได้รับการดูแลความปลอดภัยที่สามารถดำเนินการร้องขอประเภท HTTPS ได้ โดยจะใช้ คลัง C++ และคีย์ Symmetric ส่วนตัวที่ใช้งานโดยเซิร์ฟเวอร์ที่ได้รับการดูแลความปลอดภัยมาตรวจสอบความถูกต้องของตั๋วแทน Steamworks SDK มีคลังนี้ในเวอร์ชัน 32 บิตและ 64 บิตสำหรับ Windows และ Linux ภายใต้ไดเรกทอรี public/steam/lib

ก่อนที่จะใช้ตั๋วแอปพลิเคชันที่ได้รับการเข้ารหัส คุณจะต้องสร้างคีย์ส่วนตัวให้กับแอปพลิเคชันแต่ละรายการของคุณ คุณสามารถดำเนินการดังกล่าวนี้ได้โดยไปที่ "แก้ไขการตั้งค่า Steamworks" ในแอปพลิเคชันของคุณและเลือก "SDK Auth" จากเมนูดรอปดาวน์ "การรักษาความปลอดภัย" คีย์ดังกล่าวนี้จะเชื่อมโยงกับไอดีแอปของเกมคุณและเนื้อหาดาวน์โหลดใด ๆ ของเกมนั้น ในการเข้าถึงส่วนนี้ของ Steamworks ผู้ใช้จะต้องมีสิทธิ์ "จัดการการลงนาม" สำหรับแอปพลิเคชันที่เกี่ยวข้อง
หมายเหตุ: จะต้องจัดเก็บคีย์เหล่านี้ให้มีความปลอดภัย และต้องไม่แจกจ่ายภายในแอปพลิเคชันของคุณไม่ว่าด้วยวิธีใด!

Steamworks Web API

Steam เปิดให้ใช้งาน Web API แบบ HTTP ที่สามารถใช้เข้าถึงคุณสมบัติมากมายของ Steamworks ได้ โดย API จะมีวิธีการแบบสาธารณะที่สามารถเข้าถึงจากแอปพลิเคชันใด ๆ ที่สามารถขอ HTTP ได้ เช่น ไคลเอนต์เกม หรือเซิร์ฟเวอร์เกม เป็นต้น นอกจากนี้ API ยังมีวิธีการที่ได้รับการปกป้องซึ่งจำเป็นต้องผ่านกระบวนการยืนยันตัวตน และมีไว้ให้เข้าถึงจากแอปพลิเคชันแบ็กเอนด์ที่เชื่อถือได้เท่านั้น รายละเอียดเพิ่มเติมเกี่ยวกับ Web API มีให้อ่านได้ที่นี่

เซิร์ฟเวอร์ P2P หรือเซิร์ฟเวอร์เกม

ตั๋วเซสชัน

การยืนยันตัวตนผู้ใช้

ขั้นตอนดังต่อไปนี้แสดงรายละเอียดเกี่ยวกับวิธีใช้ทิกเก็ตเซสชันเพื่อตรวจสอบตัวตนของผู้ใช้ระหว่างไคลเอนต์เกมของผู้ใช้ (ไคลเอนต์ A) กับไคลเอนต์ตัวอื่นหรือเซิร์ฟเวอร์เกม (ไคลเอนต์ B):
  • ไคลเอนต์ A จะต้องเรียกรับตั๋วเซสชันด้วยการเรียก ISteamUser::GetAuthSessionTicket
  • ไคลเอนต์ A จะต้องส่งตั๋วเซสชันของตัวเองไปให้ไคลเอนต์ B
  • ไคลเอนต์ B จะต้องส่งผ่านตั๋วของไคลเอนต์ A ไปยัง ISteamUser::BeginAuthSession ซึ่งจะทำการตรวจสอบความถูกต้องอย่างรวดเร็ว หากตั๋วมีความถูกต้อง เช่นนั้นแล้ว ISteamUser::BeginAuthSession ก็จะนำส่งตั๋วไปยังส่วนแบ็กเอนด์ของ Steam เพื่อตรวจสอบว่าตั๋วดังกล่าวไม่ได้เป็นตั๋วที่ถูกใช้ซ้ำ และออกมาโดยเจ้าของบัญชีของไคลเอนต์ A แล้วก็จะส่งผลการยืนยันนี้กลับไปให้ในการคอลแบ็ก ISteamUser::ValidateAuthTicketResponse_t
  • เมื่อเซสชันการเล่นกับผู้เล่นหลายคนสิ้นสุดลง:

หมายเหตุสำคัญบางประการเกี่ยวกับตั๋วเซสชัน:
  • ตั๋วเซสชันต้องใช้เพียงครั้งเดียวเท่านั้น จะต้องเรียก ISteamUser::GetAuthSessionTicket ให้แก่ทุกไคลเอนต์ที่อยู่ในเซสชันผู้เล่นหลายคนที่เป็นผู้ร้องขอตั๋ว
  • เมื่อใช้งานตั๋วเซสชันในการยืนยันความถูกต้องของผู้เล่นที่อยู่ในเซสชันผู้เล่นหลายคนแบบ peer-to-peer นั้น ไคลเอนต์เกมแต่ละตัวจะต้องยืนยันอัตลักษณ์ของไคลเอนต์เกมตัวอื่น ๆ ทุกตัวที่อยู่ในเซสชันผู้เล่นหลายคน
  • เมื่อใช้งานตั๋วเซสชันเสร็จแล้ว ก็จะต้องเรียก ISteamUser::CancelAuthTicket ให้แก่ตัวจัดการทุกตัวที่ถูกคืนค่ามาโดย ISteamUser::GetAuthSessionTicket
  • เมื่อไคลเอนต์ A เรียก ISteamUser::CancelAuthTicket ไคลเอนต์ B ก็จะได้รับคอลแบ็ก ISteamUser::ValidateAuthTicketResponse_t แจ้งว่าจะไม่สามารถใช้ตั๋วของไคลเอนต์ A ได้อีกต่อไป
  • เมื่อไคลเอนต์ A ออกจากเกมไปพร้อมกับไคลเอนต์ B หากว่าการเรียก ISteamUser::CancelAuthTicket ของไคลเอนต์ A นั้นได้รับการประมวลผลก่อนการเรียก ISteamUser::EndAuthSession ของไคลเอนต์ B เช่นนั้นแล้วไคลเอนต์ B ก็อาจจะได้รับคอลแบ็กISteamUser::ValidateAuthTicketResponse_t แจ้งว่าได้มีการยกเลิกตั๋วไปแล้ว นั่นก็เพราะว่ามีการตกลงร่วมกันว่าไคลเอนต์ A กำลังจะออกทำให้สามารถละเว้นคอลแบ็กนี้ได้
  • สภาพทางเครือข่ายอาจจะปิดกั้นไม่ให้ส่วนแบ็กเอนด์ของ Steam ส่งคอลแบ็กไปยังผู้เรียก ISteamUser::BeginAuthSession ซึ่งอาจกินเวลาไปเรื่อย ๆ ไม่จำกัด ผู้เรียก ISteamUser::BeginAuthSession (ไคลเอนต์ B) นั้นไม่ควรอนุมานว่าตนเองรู้จักอัตลักษณ์ที่แท้จริงของไคลเอนต์ A จนกว่าจะได้รับการคอลแบ็กนี้ แต่ว่าควรจะอนุญาตให้เซสชันผู้เล่นหลายคนดำเนินการต่อไปได้
  • หากว่าผู้เรียก ISteamUser::BeginAuthSession ได้รับคอลแบ็ก ISteamUser::ValidateAuthTicketResponse_t แจ้งว่าตั๋วสำหรับไคลเอนต์ A นั้นไม่มีความถูกต้อง ผู้เรียกจะต้องปฏิเสธไม่ดำเนินเซสชันผู้เล่นหลายคนกับไคลเอนต์ A ต่อ และหากว่า Peer อื่น ๆ ที่อยู่ในเกมไม่ยอมปฏิเสธที่จะเล่นกับไคลเอนต์ A ผู้เรียกก็ควรจะออกจากเซสชันผู้เล่นหลายคนดังกล่าว
  • ISteamGameServer จะเผยให้เข้าถึงเมธอดตั๋วเซสชันต่าง ๆ เพื่อดำเนินการยืนยันตัวตนระหว่างไคลเอนต์เกมและเซิร์ฟเวอร์เกมได้

การยืนยันการเป็นเจ้าของ

เมื่อใช้ตั๋วเซสชัน Steam จะตรวจสอบสถานะความเป็นเจ้าของไอดีแอปปัจจุบันโดยอัตโนมัติ หากผู้ใช้ไม่ได้เป็นเจ้าของไอดีแอปปัจจุบัน ช่องข้อมูล m_eAuthSessionResponse ของ ISteamUser::ValidateAuthTicketResponse_t ก็จะตั้งค่าไปเป็น k_EAuthSessionResponseNoLicenseOrExpired หลังจากได้รับตั๋วเซสชันของผู้ใช้และส่งตั๋วดังกล่าวไปยัง ISteamUser::BeginAuthSession แล้ว ก็จะสามารถใช้ ISteamUser::UserHasLicenseForApp เพื่อตัดสินว่าผู้ใช้รายนั้นเป็นเจ้าของเนื้อหาดาวน์โหลดส่วนใดส่วนหนึ่งโดยเฉพาะหรือไม่

เซิร์ฟเวอร์ส่วนแบ็กเอนด์

ตั๋วเซสชัน และ Steamworks Web API

การยืนยันตัวตนผู้ใช้

ขั้นตอนดังต่อไปนี้แสดงรายละเอียดเกี่ยวกับวิธีใช้ทิกเก็ตเซสชันเพื่อตรวจสอบตัวตนของผู้ใช้ระหว่างไคลเอนต์เกมของผู้ใช้กับเซิร์ฟเวอร์ที่มีความปลอดภัย:
  • ไคลเอนต์จะต้องเรียกรับตั๋วเซสชันด้วยการเรียก ISteamUser::GetAuthTicketForWebApi
  • ในการรับประกันความถูกต้องของตั๋วนั้น ไคลเอนต์จะต้องรอคอลแบ็ก ISteamUser::GetTicketForWebApiResponse_t callback
  • ไคลเอนต์จะต้องส่งตั๋วเซสชันของตัวเองไปให้เซิร์ฟเวอร์ที่ได้รับการดูแลความปลอดภัย
  • เซิร์ฟเวอร์ที่ปลอดภัยต้องส่งคำร้องขอ HTTPS ไปยัง partner.steam-api.com และเรียกเว็บเมธอด ISteamUserAuth/AuthenticateUserTicket เพื่อส่งผ่านตั๋วเซสชันของผู้ใช้ไปในรูปสตริง UTF-8 แบบเข้ารหัสเลขฐาน 16 โปรดทราบว่าเมธอดนี้อนุญาตให้ส่งคีย์ Web API ของ Steam หรือคีย์ Web API สำหรับผู้จัดจำหน่ายที่มีความเกี่ยวข้องกับไอดีแอปสำหรับตั๋วที่ให้มาได้ อัปเดตในอนาคตสำหรับ API นี้อาจคืนค่าข้อมูลเพิ่มเติมให้แก่ผู้เรียกเมื่อมีการมอบคีย์ Web API สำหรับผู้จัดจำหน่าย
  • หากตั๋วของผู้ใช้มีความถูกต้อง เช่นนั้นแล้ว ISteamUserAuth/AuthenticateUserTicket ก็จะคืนค่าไอดี Steam แบบ 64 บิต

การยืนยันการเป็นเจ้าของ

เมื่อได้ตรวจสอบตัวตนของผู้ใช้เรียบร้อยแล้ว เซิร์ฟเวอร์ที่มีความปลอดภัยจะสามารถใช้งานวิธีการ Web API ISteamUser/CheckAppOwnership เพื่อตรวจสอบดูว่าผู้ใช้เป็นเจ้าของไอดีแอปที่เฉพาะเจาะจงหรือไม่ หรือจะเรียก ISteamUser/GetPublisherAppOwnership เพื่อรับรายการไอดีแอปทั้งหมดที่ผู้ใช้เป็นเจ้าของ ซึ่งเกี่ยวข้องกับคีย์สำหรับผู้จัดจำหน่ายที่จัดไว้ให้

ตั๋วแอปพลิเคชันที่ได้รับการเข้ารหัส

การยืนยันตัวตนผู้ใช้

ขั้นตอนต่อไปนี้แสดงรายละเอียดเกี่ยวกับวิธีใช้ตั๋วแอปพลิเคชันที่ได้รับการเข้ารหัส เพื่อยืนยันตัวตนของผู้ใช้ระหว่างไคลเอนต์เกมของผู้ใช้กับเซิร์ฟเวอร์ที่มีความปลอดภัย:
  • ไคลเอนต์จะต้องเรียก ISteamUser::RequestEncryptedAppTicket และรอผลลัพธ์การเรียก ISteamUser::EncryptedAppTicketResponse_t
  • จากนั้นไคลเอนต์จะต้องเรียก ISteamUser::GetEncryptedAppTicket เพื่อเรียกรับตั๋วที่ได้รับการเข้ารหัสของผู้ใช้ และส่งตั๋วดังกล่าวนั้นไปยังเซิร์ฟเวอร์ที่ได้รับการดูแลความปลอดภัย
  • เมื่อใช้คลังของตั๋วแอปพลิเคชันที่ได้รับการเข้ารหัสนั้น เซิร์ฟเวอร์ที่ได้รับการดูแลความปลอดภัยจะต้อง:

คุณสามารถดูตัวอย่างการใช้งานได้ในโครงการ แอปพลิเคชันตัวอย่างของ Steamworks API (SpaceWar) ที่อยู่ใน SDK โดยเฉพาะอย่างยิ่ง CSpaceWarClient::RetrieveEncryptedAppTicket และ CSpaceWarClient::OnRequestEncryptedAppTicket

การยืนยันการเป็นเจ้าของ

Steam จะสร้างตั๋วแอปพลิเคชันที่ได้รับการเข้ารหัสให้แก่ผู้ใช้ซึ่งเป็นเจ้าของไอดีแอปที่ตั๋วนี้สร้างให้เท่านั้น หลังจากถอดรหัสตั๋วแอปพลิเคชันที่ได้รับการเข้ารหัสแล้ว เซิร์ฟเวอร์ที่มีความปลอดภัยจะสามารถใช้งาน SteamEncryptedAppTicket::BIsTicketForApp เพื่อตรวจสอบไอดีแอปของตั๋วว่ามีความตรงกันกับไอดีแอปของเกมหรือไม่ นอกจากนั้นเซิร์ฟเวอร์ยังสามารถใช้ SteamEncryptedAppTicket::BUserOwnsAppInTicket เพื่อตัดสินว่าผู้ใช้เป็นเจ้าของส่วนที่เฉพาะเจาะจงของ เนื้อหาดาวน์โหลด (DLC) หรือไม่

การยืนยันตัวตนทางเว็บเบราว์เซอร์ด้วย OpenID

Steam เป็นผู้ให้บริการ OpenID ตามที่ได้บัญญัติไว้ในข้อกำหนดคุณลักษณะของ OpenID 2.0 ภายในเว็บเบราว์เซอร์ เว็บไซต์ของผู้พัฒนาภายนอกจะสามารถใช้ OpenID เพื่อเรียกรับ SteamID ของผู้ใช้ ซึ่งสามารถนำไปใช้เป็นข้อมูลรับรองในการเข้าระบบของเว็บไซต์ผู้พัฒนาภายนอก หรือเชื่อมต่อไปยังบัญชีที่มีอยู่แล้วในเว็บไซต์นั้นได้

เมื่อมีการใช้งาน OpenID ผู้ใช้จะเริ่มต้นจากเว็บเบราว์เซอร์ในเว็บไซต์ของผู้พัฒนาภายนอก เมื่อผู้ใช้ต้องการที่จะเข้าสู่ระบบ/เชื่อมต่อบัญชีของตนเองไปยังเว็บไซต์ดังกล่าวโดยใช้ OpenID เว็บไซต์ดังกล่าวจะนำทางให้ผู้ใช้ไปยังแบบฟอร์มการเข้าสู่ระบบที่อยู่ในเว็บไซต์ของชุมชน Steam เมื่อผู้ใช้ได้กรอกข้อมูลการเข้าสู่ระบบ Steam ของตัวเองแล้ว เว็บเบราว์เซอร์ของผู้ใช้ก็จะนำทางกลับไปยังเว็บไซต์ของผู้พัฒนาภายนอกโดยอัตโนมัติ โดยเพิ่มเติมข้อมูลจำเพาะ OpenID บางอย่างต่อท้าย URL ที่คืนค่าด้วย จากนั้นไลบรารี OpenID ของเว็บไซต์ก็จะใช้ข้อมูลดังกล่าวนี้เพื่อตรวจสอบความถูกต้องและเรียกรับ SteamID ของผู้ใช้

Steam จะจัดเตรียมรูปภาพดังต่อไปนี้ ซึ่งเว็บไซต์ผู้พัฒนาภายนอกอาจนำไปใช้เมื่อเชื่อมโยงไปยังหน้าการเข้าสู่ระบบของ Steam:
sits_large_border.png

sits_large_noborder.png

sits_small.png

การยืนยันตัวตนผู้ใช้

OpenID 2.0 ของ Steam อาจนำไปปรับใช้เพื่อเชื่อมโยงบัญชี Steam ของผู้ใช้เข้ากับบัญชีของตนที่เว็บไซต์ของผู้พัฒนาภายนอกได้
และสามารถดูรายชื่อไลบรารี OpenID โอเพนซอร์ซได้ที่ OpenID website ในการใช้ OpenID เพื่อตรวจสอบตัวตนของผู้ใช้ คุณจะต้อง:
  • กำหนดค่าคลังของ OpenID ให้ใช้งาน URL ดังต่อไปนี้เป็น OP Endpoint URL ของ Steam: https://steamcommunity.com/openid/
  • หลังจากที่ผู้ใช้ได้รับการยืนยันตัวตนแล้ว Claimed ID ของผู้ใช้ก็จะบรรจุไปด้วยไอดี Steam ของผู้ใช้ Steam Claimed ID จะอยู่ในรูปแบบดังต่อไปนี้: http://steamcommunity.com/openid/id/<steamid>

การยืนยันการเป็นเจ้าของ

หลังจากที่ตรวจสอบตัวตนของผู้ใช้เรียบร้อยแล้ว เซิร์ฟเวอร์ที่ปลอดภัยจะสามารถใช้เมธอด Web API ISteamUser/CheckAppOwnership เพื่อตรวจสอบว่าผู้ใช้เป็นเจ้าของไอดีแอปที่เฉพาะเจาะจงหรือไม่ หรือจะเรียก ISteamUser/GetPublisherAppOwnership เพื่อรับรายการไอดีแอปทั้งหมดที่ผู้ใช้เป็นเจ้าของ ซึ่งเกี่ยวข้องกับคีย์ Web API สำหรับผู้จัดจำหน่ายที่จัดไว้ให้

ตัวอย่าง

การเชื่อมบัญชีของผู้พัฒนาภายนอกเข้ากับบัญชี Steam

บัญชีของผู้พัฒนาภายนอกสามารถเชื่อมต่อเข้ากับบัญชี Steam ได้โดยเชื่อมโยง SteamID ของผู้ใช้เข้ากับบัญชีของผู้พัฒนาภายนอก

คุณอาจเรียกรับ SteamID ของผู้ใช้ได้อย่างปลอดภัย ทั้งในเกมหรือผ่านทางเว็บเบราว์เซอร์ และหลังจากที่เชื่อมโยงครั้งแรกเรียบร้อยแล้ว คุณก็สามารถอนุญาตให้เข้าถึงบัญชีของผู้พัฒนาภายนอกได้อย่างปลอดภัย โดยเพียงแค่ตรวจสอบยืนยัน SteamID ของผู้ใช้เท่านั้น กระบวนการนี้จะช่วยให้ผู้ใช้ Steam ไม่จำเป็นต้องไปเข้าสู่ระบบบัญชีของผู้พัฒนาภายนอกแยกต่างหากอีก นอกจากนี้ หากสามารถสร้างและเชื่อมโยงบัญชีใหม่ของผู้พัฒนาภายนอกได้โดยอัตโนมัติเมื่อมี SteamID ใหม่ ผู้ใช้ Steam ก็จะไม่ต้องรับรู้ว่ามีการรับรองความถูกต้องของอีกบัญชีหนึ่งเกิดขึ้นแต่อย่างใด แค่บัญชี Steam เพียงบัญชีเดียวก็สามารถมอบสิทธิ์ในการเข้าถึงเกมทั้งหมดของผู้ใช้ได้ ซึ่งช่วยให้ผู้ใช้มีประสบการณ์การใช้งานที่คล่องตัว และขจัดอุปสรรคที่อาจเกิดขึ้นในการติดตั้งและลองเกมใหม่

การเชื่อมโยงจากในเกม

ตั๋วเซสชันสามารถนำมาใช้เพื่อยืนยันตัวตนของผู้ใช้ระหว่างไคลเอนต์เกมกับเซิร์ฟเวอร์ส่วนแบ็กเอนด์ที่ปลอดภัย โดยใช้ Steamworks Web API:
  • ไคลเอนต์จะต้องเรียกรับตั๋วเซสชันด้วยการเรียก ISteamUser::GetAuthTicketForWebApi
  • ในการรับประกันความถูกต้องของตั๋วนั้น ไคลเอนต์จะต้องรอคอลแบ็ก ISteamUser::GetTicketForWebApiResponse_t
  • ไคลเอนต์จะต้องส่งตั๋วเซสชันของตัวเองไปให้เซิร์ฟเวอร์ที่ได้รับการดูแลความปลอดภัย
  • เซิร์ฟเวอร์ที่ได้รับการดูแลความปลอดภัยดังกล่าวก็จะต้องดำเนินการร้องขอประเภท HTTPS ไปยัง api.steampowered.com และเรียกเว็บเมธอด ISteamUserAuth/AuthenticateUserTicket เพื่อส่งผ่านตั๋วเซสชันของผู้ใช้เป็นสตริง UTF-8 ที่ได้รับการเข้ารหัสเป็นเลขฐาน 16 โปรดทราบว่าเมธอดนี้จะต้องใช้ รหัส Web API สำหรับผู้จัดจำหน่าย ที่มีความเกี่ยวข้องกับไอดีแอปสำหรับตั๋วที่ให้มา
  • หากตั๋วของผู้ใช้มีความถูกต้อง เช่นนั้นแล้ว ISteamUserAuth/AuthenticateUserTicket ก็จะคืนค่าไอดี Steam แบบ 64 บิต

การเชื่อมโยงจากเว็บเบราว์เซอร์

เนื่องจาก Steam รองรับข้อกำหนดเฉพาะของ OpenID 2.0 ดังนั้น คุณจึงอนุญาตให้ผู้ใช้เข้าสู่บัญชี Steam ของตนจากเว็บไซต์ของคุณและเรียกรับ SteamID ของผู้ใช้เองได้อย่างปลอดภัย หากต้องการรายละเอียดเพิ่มเติมเกี่ยวกับวิธีการใช้ OpenID กับ Steam โปรดไปที่การใช้งาน OpenID

การยืนยันการเป็นเจ้าของ

หลังจากที่ตรวจสอบตัวตนของผู้ใช้เรียบร้อยแล้ว เซิร์ฟเวอร์ที่ปลอดภัยจะสามารถใช้เมธอด Web API ISteamUser/CheckAppOwnership เพื่อตรวจสอบว่าผู้ใช้เป็นเจ้าของไอดีแอปที่เฉพาะเจาะจงหรือไม่ หรือจะเรียก ISteamUser/GetPublisherAppOwnership เพื่อรับรายการไอดีแอปทั้งหมดที่ผู้ใช้เป็นเจ้าของ ซึ่งเกี่ยวข้องกับคีย์ Web API สำหรับผู้จัดจำหน่ายที่จัดไว้ให้

การย้ายการใช้งานจากรหัสผลิตภัณฑ์ของผู้พัฒนาภายนอกมาสู่ระบบตรวจสอบการเป็นเจ้าของ Steam แบบเนทิฟ

Steam เองมีวิธีการต่าง ๆ หลายวิธีเพื่อให้ผลิตภัณฑ์สามารถยืนยันตัวตนของผู้ใช้ได้ จึงไม่จำเป็นต้องใช้รหัสผลิตภัณฑ์ภายนอก เราได้รวบรวมรายการกรณีใช้งานรหัสผลิตภัณฑ์ทั่วไป และวิธีการที่คุณอาจนำไปปรับใช้กับ Steam ในแต่ละกรณีดังต่อไปนี้:

ฟอรัมสนทนาประเภทจำกัดการใช้งานส่วนบุคคล

คุณจะต้องดำเนินการเพื่อให้ผู้ใช้เข้าสู่ระบบโดยตรงด้วยบัญชี Steam ของตนเองโดยใช้ OpenID จากนั้น OpenID จะคืนค่า SteamID แบบ 64 บิต ของผู้ใช้กลับมา ซึ่งสามารถนำไปใช้กับ ISteamUser/CheckAppOwnership เพื่อตรวจสอบความถูกต้องว่าผู้ใช้เป็นเจ้าของไอดีแอปของคุณ คุณสามารถอ่านรายละเอียดเพิ่มเติมได้ทางด้านบนที่การเชื่อมโยงบัญชีภายนอกเข้ากับบัญชี Steam

การปลดล็อคเกมที่ไม่มี DRM ที่ไม่ใช่ของ Steam

ให้ใช้ OpenID และ ISteamUser/CheckAppOwnership (ตามรายละเอียดข้างต้น) เพื่อปลดล็อคเนื้อหาบนเว็บไซต์ของคุณเอง หรือไม่เช่นนั้น ก็ให้คุณอัปโหลดบิลด์ของเกมที่ไม่มี DRM เป็นเนื้อหาดาวน์โหลดฟรีที่เลือกได้

ซอฟต์แวร์ได้รับการจัดจำหน่ายอยู่บนเว็บไซต์ของฉันเองและจะต้องปลดล็อคด้วยรหัส

คุณจะต้องดำเนินการเพื่อให้ผู้ใช้เข้าสู่ระบบโดยตรงด้วยบัญชี Steam ของตนเองโดยใช้ OpenID จากนั้น OpenID จะคืนค่า SteamID แบบ 64 บิต ของผู้ใช้กลับมา ซึ่งสามารถนำไปใช้กับ ISteamUser/CheckAppOwnership เพื่อตรวจสอบความถูกต้องว่าผู้ใช้เป็นเจ้าของไอดีแอปของคุณ คุณสามารถอ่านรายละเอียดเพิ่มเติมได้ใน การเชื่อมบัญชีของผู้พัฒนาภายนอกเข้ากับบัญชี Steam ข้างต้น

การมอบไอเท็มในเกมเป็นรางวัลให้แก่การลงทะเบียนรหัสผู้พัฒนาภายนอกของคุณ

หากคุณใช้ การบริการช่องเก็บของ Steam โปรดตรวจสอบให้แน่ใจว่ามีการกำหนดค่า itemdef ของไอเท็มเป็นไอเท็มโปรโมชันไว้อย่างถูกต้อง และเรียก ISteamInventory::AddPromoItem จากไคลเอนต์
หากคุณมีแบ็กเอนด์ไอเท็มของคุณเอง คุณสามารถเรียก ISteamUser::GetAuthSessionTicket จากไคลเอนต์เกม จากนั้นใช้ ISteamUserAuth/AuthenticateUserTicket กับ ISteamUser/CheckAppOwnership เพื่อยืนยันความเป็นเจ้าของ ข้อมูลเพิ่มเติม...

รหัสจะเป็นตัวควบคุมว่าจะปลดล็อคซอฟต์แวร์เวอร์ชันใด

เกมของคุณในแต่ละเวอร์ชันควรมีไอดีแอปของตัวเอง ให้เรียก ISteamUser::GetAuthSessionTicket จากไคลเอนต์เกม จากนั้นใช้ ISteamUserAuth/AuthenticateUserTicket กับ ISteamUser/CheckAppOwnership เพื่อยืนยันความเป็นเจ้าของ ข้อมูลเพิ่มเติม...