ผู้ไม่มีส่วนเกี่ยวข้อง

หน้าหลัก เอกสารอ้างอิงและความช่วยเหลือ
เอกสาร 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 ไปยัง api.steampowered.com

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

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

หมายเหตุ: จะต้องจัดเก็บคีย์เหล่านี้ให้มีความปลอดภัย และจะต้องไม่แจกจ่ายไปในแอปพลิเคชันของคุณไม่ว่าจะทางใดก็ตาม!

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 เพื่อตัดสินได้ว่าผู้ใช้ได้เป็นเจ้าของชิ้นส่วนของเนื้อหาเสริมสำหรับดาวน์โหลดที่ระบุไว้หรือไม่

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

หมายเหตุ: เมธอดการยืนยันตัวตนผู้ใช้แบบนี้จะไม่สามารถใช้ได้กับเกมที่ตั้งใจจะใช้ระบบ Valve Anti-Cheat

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

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

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

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

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

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

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

ขั้นตอนดังต่อไปนี้จะแจ้งให้ทราบถึงรายละเอียดวิธีการใช้ตั๋วแอปพลิเคชันที่ได้รับการเข้ารหัสในการตรวจสอบอัตลักษณ์ตัวตนของผู้ใช้ระหว่างไคลเอนต์เกมของผู้ใช้กับเซิร์ฟเวอร์ที่ได้รับการดูแลความปลอดภัย:
  • ไคลเอนต์จะต้องเรียก 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 ในการใช้ OpenID เพื่อตรวจสอบความถูกต้องของอัตลักษณ์ตัวตนของผู้ใช้นั้น คุณจะต้อง:
  • กำหนดค่าคลังของ OpenID ให้ใช้งาน URL ดังต่อไปนี้เป็น OP Endpoint URL ของ Steam: https://steamcommunity.com/openid/
  • หลังจากที่ผู้ใช้ได้รับการยืนยันตัวตนแล้ว Claimed ID ของผู้ใช้ก็จะบรรจุไปด้วยไอดี Steam ของผู้ใช้ Steam Claimed ID จะอยู่ในรูปแบบดังต่อไปนี้: http://steamcommunity.com/openid/id/<steamid>

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

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

ตัวอย่าง

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

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

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

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

สามารถใช้ตั๋วเซสชันเพื่อตรวจสอบความถูกต้องของอัตลักษณ์ของผู้ใช้ระหว่างไคลเอนต์เกมและเซิร์ฟเวอร์ส่วนแบ็กเอนด์ที่ได้รับการดูแลความปลอดภัย ด้วยการใช้ Steamworks Web API ได้:
  • ไคลเอนต์จะต้องเรียกรับตั๋วเซสชันด้วยการเรียก ISteamUser::GetAuthSessionTicket
  • ในการรับประกันความถูกต้องของตั๋วนั้น ไคลเอนต์จะต้องรอคอลแบ็ก ISteamUser::GetAuthSessionTicketResponse_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

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

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

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

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

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

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

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

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

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

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

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

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

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

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