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

หน้าหลัก เอกสารอ้างอิงและความช่วยเหลือ
เอกสาร Steamworks
ภาพรวมของ Web API

บทนำ

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

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

คุณสามารถพบรายการทั้งหมดของ Steamworks Web API ได้ใน ข้อมูลอ้างอิงในการใช้งาน Steamworks Web API

รูปแบบของคำร้องขอ

Steamworks Web API สามารถเข้าถึงได้โดยการส่งคำร้องขอ HTTP (พอร์ต 80) หรือ HTTPS (พอร์ต 443) ไปยัง api.steampowered.com
หากคุณเป็นผู้จัดจำหน่าย ทาง Steam ยังให้บริการเซิร์ฟเวอร์ Web API สำหรับพันธมิตรเท่านั้นที่เว็บไซต์ https://partner.steam-api.com อีกด้วย บริการนี้มีจุดมุ่งหมายเพื่อมอบความพร้อมในการใช้งานมากกว่าโฮสต์เซิร์ฟเวอร์สาธารณะ คุณควรใช้บริการนี้กับทุกคำร้องขอที่ส่งมาจากเซิร์ฟเวอร์ที่ปลอดภัยของคุณ กรุณาอ่าน ที่อยู่โฮสต์ Web API, ข้อควรพิจารณาเกี่ยวกับไฟร์วอลล์ สำหรับข้อมูลเพิ่มเติม

Web API นั้นเหมือนกับ Steamworks C++ API ตรงที่ถูกแบ่งออกเป็นหลายอินเตอร์เฟสซึ่งมีวิธีการที่เกี่ยวข้องอยู่ รูปแบบ URI ของคำร้องขอ API แต่ละรายการคือ:
https://api.steampowered.com/<interface>/<method>/v<version>/

วิธีการส่วนใหญ่รองรับรายการพารามิเตอร์บังคับและพารามิเตอร์ที่เป็นตัวเลือกเสริม โดยจะต้องส่งพารามิเตอร์เหล่านี้ในรูปแบบพารามิเตอร์ GET หรือ POST ในคำร้องขอ ทั้งนี้ขึ้นอยู่กับวิธีการที่ใช้

ควรส่งคำร้องขอทั้งหมดโดยใช้ HTTP 1.1 และใช้การเข้ารหัส SSL v3, 128 บิต ทุกครั้งที่เป็นไปได้ โดยประเภทข้อมูลของเนื้อหาต้องเป็น application/x-www-form-urlencoded และพารามิเตอร์ POST ต้องอยู่ในเนื้อความของคำร้องขอดังกล่าวที่อยู่ในรูปแบบมาตรฐานของ urlencoding และต้องส่งข้อความในรูปแบบ UTF-8

การยืนยันตัวตน

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

พารามิเตอร์แบบอาร์เรย์

บางวิธีการคาดหวังพารามิเตอร์แบบอาร์เรย์ ซึ่งจะระบุโดยส่วนต่อท้าย [0] ที่ชื่อพารามิเตอร์ เมื่อส่งผ่านอาร์เรย์ จะมีพารามิเตอร์ count ที่ระบุจำนวนพารามิเตอร์ในอาร์เรย์เสมอ ตัวอย่าง:
?count=2&name[0]=SomeNameHere&name[1]=SomeOtherName

อินเตอร์เฟสบริการ

นอกจากการเรียก Web API ทั่วไปแล้ว เรายังมีอินเตอร์เฟสบริการเตรียมไว้อีกด้วย อินเตอร์เฟสเหล่านี้ทำงานคล้ายกับอินเตอร์เฟสทั่วไปอย่างยิ่ง ข้อแตกต่างที่สำคัญก็คือ API บริการทั้งหมดจะรับอาร์กิวเมนต์ในรูปแบบ JSON Blob รายการเดี่ยวได้ด้วย ไม่ใช่แค่การรับด้วยพารามิเตอร์ GET หรือ POST ในการส่งผ่านข้อมูลในรูปแบบ JSON ให้เรียกใช้วิธีการ Web API ด้วยชุดพารามิเตอร์ input_json อย่างเช่น:
?key=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX&input_json={"steamid":76561197972495328}

โปรดทราบว่า JSON จะต้องได้รับการเข้ารหัสด้วย URL ช่องข้อมูล "key" และ "format" ควรยังคงส่งผ่านเป็นพารามิเตอร์แยกกันดังเช่นก่อนหน้านี้ นอกจากนี้เรายังรองรับคำร้องขอ POST เช่นกัน

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

คิวรี่ตัวอย่าง

ตัวอย่างต่อไปนี้ควรเรียกคืนรายการข่าวสารล่าสุด 3 รายการของ Team Fortress 2
คำร้องขอนี้จะระบุว่าควรส่งคืนคำตอบในรูปแบบ JSON และรวม: พารามิเตอร์ appid ที่จำเป็น (ไอดีแอปของ Team Fortress 2 คือ 440) และพารามิเตอร์ทางเลือกเสริม Count เพื่อจำกัดจำนวนผลลัพธ์ที่คืนกลับมา

GET /ISteamNews/GetNewsForApp/v2/?appid=440&count=3\r\n Host: api.steampowered.com\r\n Content-Length: 0\r\n\r\n

คุณสามารถดำเนินการและดูผลลัพธ์ของคิวรี่นี้ด้วยลิงก์นี้ได้:
https://api.steampowered.com/ISteamNews/GetNewsForApp/v2/?appid=440&count=3

คุณสามารถอ่านเพิ่มเติมเกี่ยวกับการเรียกจำเพาะนี้ได้ที่นี่: ISteamNews/GetNewsForApp

การรับไอดี Steam ของผู้ใช้

Steamworks Web API ระบุตัวผู้ใช้แต่ละคนโดยใช้ไอดี Steam จำเพาะขนาด 64 บิต หากต้องการเรียนรู้วิธีรับไอดี Steam ของผู้ใช้อย่างปลอดภัย กรุณาอ่าน การยืนยันตัวตนและการเป็นเจ้าของของผู้ใช้

ที่อยู่โฮสต์ Web API, ข้อควรพิจารณาเกี่ยวกับไฟร์วอลล์

Web API สาธารณะ (api.steampowered.com) จะอยู่หลัง Edge Cache ของ Akamai ดังนั้นที่อยู่ IP ตามจริงที่คุณจะเห็นสำหรับชื่อนั้นจะแตกต่างกันไป ทั้งนี้ขึ้นกับตำแหน่งที่ตั้งของคุณ และการเปลี่ยนแปลงบริการที่เกิดขึ้นอย่างต่อเนื่อง IP อาจเปลี่ยนแปลงอย่างรวดเร็วและคล่องแคล่ว ดังนั้น หากคุณเรียก Web API โดยส่งคำร้องขอขาออกผ่านไฟร์วอลล์ กรุณาอ่านต่อ

คุณควรใช้โหนดสำหรับพันธมิตรเท่านั้น (https://partner.steam-api.com) สำหรับการส่งคำร้องขอทั้งหมดจากเซิร์ฟเวอร์ที่ปลอดภัยของคุณ โฮสต์นี้มีคุณสมบัติบางอย่างที่แตกต่างจากโฮสต์สาธารณะดังนี้:
  • โฮสต์นี้สามารถเข้าถึงได้ผ่าน HTTPS
  • โฮสต์นี้ไม่ได้อยู่หลัง Edge Cache ของ Akamai
  • คำร้องขอทั้งหมดที่ส่งถึงโฮสต์นี้จะต้องดำเนินการด้วยคีย์ Web API สำหรับผู้จัดจำหน่ายของคุณ แม้จะเป็นคำร้องขอที่ตามปกติแล้วไม่จำเป็นต้องใช้คีย์ก็ตาม คำร้องขอที่ส่งโดยไม่ใช้คีย์สำหรับผู้จัดจำหน่ายที่ถูกต้องจะคืนรหัสข้อผิดพลาด 403 กลับมา
  • คำร้องขอที่สร้างรหัสสถานะ 403 จะทำให้เกิดขีดจำกัดอัตราการใช้งานที่เข้มงวดสำหรับ IP ที่ดำเนินการเชื่อมต่อ เราทำเช่นนี้เพื่อรับรองความพร้อมในการใช้งานระดับสูง หากคุณสร้างคำร้องขอที่คืนรหัสสถานะ 403 เป็นจำนวนมากพอภายในช่วงเวลาหนึ่ง ไม่ว่าจะสร้างในระหว่างการทดสอบ หรือการใช้คีย์ Web API ทั่วไปแทนคีย์สำหรับผู้จัดจำหน่าย โฮสต์จะเพิ่ม IP ของคุณไปยังรายการ IP ที่ถูกปฏิเสธเป็นการชั่วคราว
  • หากคุณจะส่งคำร้องขอถึงบริการ API นี้จากโฮสต์ที่มีตัวกรองไฟร์วอลล์ที่คัดกรองคำร้องขอขาออก คุณควรเพิ่มชื่อ DNS 'partner.steam-api.com' ไปยังรายการที่อนุญาต หากไฟร์วอลล์ของคุณรองรับที่อยู่ที่เป็นตัวเลขเท่านั้น ให้เพิ่มบล็อก CIDR ต่อไปนี้ไปยังรายการที่อนุญาต: 208.64.200.0/22
    หมายเหตุ: คุณไม่ควรเชื่อมต่อกับเซิร์ฟเวอร์ Web API ตาม IP กรุณาใช้ชื่อ DNS ที่อยู่เหล่านี้มีไว้สำหรับไคลเอนต์ที่จำเป็นต้องอนุญาตที่อยู่เหล่านี้เป็นพิเศษกับไฟร์วอลล์เท่านั้น