การใช้งานเว็บล็อกอินแบบกำหนดเอง
เอกสารนี้อธิบายวิธีนำเว็บล็อกอินไปใช้งานด้วย Hive Server API โดยตรงโดยไม่ใช้ หน้าเว็บล็อกอิน ที่ Hive Platform มีให้ หากแอปต้องการสร้าง UI สำหรับเข้าสู่ระบบของตนเองและจัดการการยืนยันตัวตนของ IdP โดยตรง ให้ดูเอกสารนี้
Note
หากต้องการใช้ API เว็บล็อกอินแบบกำหนดเอง ต้องลงทะเบียนแอปและดำเนินการ การออก OAuth 2.0 Access Token ให้เสร็จสิ้นใน Hive Console
ภาพรวม
ใช้เว็บล็อกอินแบบกำหนดเองในกรณีต่อไปนี้
- เมื่อต้องการใช้ UI/UX สำหรับเข้าสู่ระบบที่เป็นเอกลักษณ์ของแอป
- เมื่อต้องการสร้างหน้าจอเข้าสู่ระบบให้สอดคล้องกับดีไซน์ของเว็บไซต์เดิม
- เมื่อต้องการให้ผู้ใช้เข้าสู่ระบบภายในหน้าของตนเองโดยไม่ต้องรีไดเรกต์ไปยังหน้าเว็บล็อกอิน
API ที่มีให้ในฟีเจอร์ 'การใช้งานเว็บล็อกอินแบบกำหนดเอง' มีดังนี้
การเข้าสู่ระบบด้วย IdP
สร้างผู้เล่นใหม่ด้วยข้อมูล IdP หรือส่งคืนข้อมูลผู้เล่นเดิมหาก IdP นั้นลงทะเบียนไว้แล้ว เมื่อเข้าสู่ระบบสำเร็จ คุณสามารถตรวจสอบ PlayerID ได้จาก data.player_id
Warning
API เว็บล็อกอินแบบกำหนดเองไม่รองรับการสร้างบัญชี guest (GUEST, idp_index: 0)
Note
หากต้องการใช้ API ลบบัญชี ต้องตั้งค่า require_token เป็น true เพื่อรับค่า Authorization ในส่วนหัวการตอบกลับ หากไม่ใช้ฟังก์ชันลบบัญชี สามารถตั้งค่าเป็น false ได้
URL คำขอ
ส่วนหัวคำขอ
| ชื่อฟิลด์ | คำอธิบาย | ประเภท | จำเป็น |
| X-Access-Token | OAuth 2.0 Access Token สำหรับการรับรองความถูกต้องของเซิร์ฟเวอร์แอป (ดู ออก OAuth Token) | String | Y |
| ISCRYPT | ข้อมูลถูกเข้ารหัสหรือไม่ (0 = ไม่เข้ารหัส) (ต้องส่ง 0 เสมอ) | Integer | Y |
เนื้อหาคำขอ
| ชื่อฟิลด์ | คำอธิบาย | ประเภท | จำเป็น |
| appid | App ID | String | Y |
| idp_index | รหัสดัชนี IdP (โปรดดู รายการ IdP) | Integer | Y |
| idp_user_id | ตัวระบุผู้ใช้เฉพาะของ IdP | String | Y |
| require_token | ต้องการโทเค็นผู้เล่นหรือไม่ เมื่อต้องใช้ API ลบบัญชี ให้ตั้งค่าเป็น true และหากไม่ใช้ให้ตั้งค่าเป็น false | Boolean | Y |
ตัวอย่างคำขอ
{
"appid": "com.com2us.hivesdk.normal.freefull.apple.global.ios.universal",
"idp_index": 3,
"idp_user_id": "google_67890",
"require_token": true
}
ส่วนหัวการตอบกลับ
จะมีส่วนหัวต่อไปนี้รวมอยู่ด้วยเมื่อ require_token: true
| ชื่อฟิลด์ | คำอธิบาย | ประเภท |
| Authorization | เซสชันโทเค็น ใช้เมื่อเรียก API ลบบัญชี | String |
เนื้อหาการตอบกลับ
| ชื่อฟิลด์ | คำอธิบาย | ประเภท |
| result_code | รหัสตอบกลับ รายละเอียด | Integer |
| result_msg | ข้อความผลลัพธ์ | String |
| token_validation | ผลการตรวจสอบ JWT (ข้อผิดพลาดการตรวจสอบ JWT) | Object |
| token_validation.result_code | รหัสผลการตรวจสอบ JWT | Integer |
| token_validation.result_msg | ข้อความผลการตรวจสอบ JWT | String |
| data | ข้อมูลผลลัพธ์ | Object |
| data.player_id | Player ID | Integer |
| data.idp_index | ดัชนี IdP | Integer |
| data.idp_id | ชื่อ IdP | String |
| data.idp_user_id | ID ผู้ใช้ IdP | String |
ตัวอย่างการตอบกลับ
สำเร็จ
{
"result_code": 0,
"result_msg": "SUCCESS",
"token_validation": {
"result_code": 0,
"result_msg": "success"
},
"data": {
"player_id": 100000002,
"idp_index": 3,
"idp_id": "GOOGLE",
"idp_user_id": "google_67890"
}
}
รหัสตอบกลับ
| ค่ารหัส | คำอธิบาย |
| 0 | สำเร็จ |
| 2499 | การตรวจสอบ JWT ล้มเหลว (ดู token_validation) |
| 4200 | ไม่มี IdP นี้ |
| 5000 | ข้อผิดพลาดภายในเซิร์ฟเวอร์ |
การเชื่อมโยง IdP
เชื่อมโยง IdP ใหม่กับบัญชีผู้เล่นเดิม ต้องเรียกใช้หลังจากเข้าสู่ระบบผ่าน API การเข้าสู่ระบบด้วย IdP เท่านั้น
URL คำขอ
ส่วนหัวคำขอ
| ชื่อฟิลด์ | คำอธิบาย | ประเภท | จำเป็น |
| X-Access-Token | OAuth 2.0 Access Token สำหรับการรับรองความถูกต้องของเซิร์ฟเวอร์แอป (ดู ออก OAuth Token) | String | Y |
| ISCRYPT | ข้อมูลถูกเข้ารหัสหรือไม่ (0 = ไม่เข้ารหัส) (ต้องส่ง 0 เสมอ) | Integer | Y |
เนื้อหาคำขอ
| ชื่อฟิลด์ | คำอธิบาย | ประเภท | จำเป็น |
| appid | App ID | String | Y |
| idp_index | รหัสดัชนี IdP (โปรดดู รายการ IdP) | Integer | Y |
| idp_user_id | ตัวระบุผู้ใช้เฉพาะของ IdP | String | Y |
| player_id | Player ID ที่จะเชื่อมโยง | Integer | Y |
ตัวอย่างคำขอ
{
"appid": "com.com2us.hivesdk.normal.freefull.apple.global.ios.universal",
"idp_index": 2,
"idp_user_id": "fb_12345678",
"player_id": 100000001
}
เนื้อหาการตอบกลับ
| ชื่อฟิลด์ | คำอธิบาย | ประเภท |
| result_code | รหัสตอบกลับ รายละเอียด | Integer |
| result_msg | ข้อความผลลัพธ์ | String |
| token_validation | ผลการตรวจสอบ JWT (ข้อผิดพลาดการตรวจสอบ JWT) | Object |
| token_validation.result_code | รหัสผลการตรวจสอบ JWT | Integer |
| token_validation.result_msg | ข้อความผลการตรวจสอบ JWT | String |
| data | ข้อมูลผลลัพธ์ | Object |
| data.player_id | Player ID | Integer |
| data.idp_index | ดัชนี IdP ที่เชื่อมโยงแล้ว | Integer |
| data.idp_id | ชื่อ IdP ที่เชื่อมโยงแล้ว | String |
| data.idp_user_id | ID ผู้ใช้ IdP | String |
ตัวอย่างการตอบกลับ
สำเร็จ
{
"result_code": 0,
"result_msg": "SUCCESS",
"token_validation": {
"result_code": 0,
"result_msg": "success"
},
"data": {
"player_id": 100000001,
"idp_index": 2,
"idp_id": "FACEBOOK",
"idp_user_id": "fb_12345678"
}
}
กรณีที่เชื่อมโยงกับผู้เล่นคนอื่นไว้แล้ว
{
"result_code": 1002,
"result_msg": "Already connected other player",
"token_validation": {
"result_code": 0,
"result_msg": "success"
},
"data": {
"player_id": 100000002,
"idp_index": 2,
"idp_id": "FACEBOOK",
"idp_user_id": "fb_12345678"
}
}
รหัสตอบกลับ
| ค่ารหัส | คำอธิบาย |
| 0 | สำเร็จ |
| 1002 | IdP นี้เชื่อมโยงกับผู้เล่นคนอื่นอยู่แล้ว |
| 1003 | เชื่อมโยง IdP ประเภทเดียวกันไว้แล้ว |
| 2002 | ไม่มีผู้เล่นนี้ |
| 2499 | การตรวจสอบ JWT ล้มเหลว (ดู token_validation) |
| 4200 | ไม่มี IdP นี้ |
| 5000 | ข้อผิดพลาดภายในเซิร์ฟเวอร์ |
ยกเลิกการเชื่อมโยง IdP
ยกเลิกการเชื่อมโยง IdP ที่เชื่อมโยงกับบัญชีผู้เล่น ต้องเรียกใช้หลังจากเข้าสู่ระบบผ่าน API การเข้าสู่ระบบด้วย IdP เท่านั้น
URL คำขอ
ส่วนหัวคำขอ
| ชื่อฟิลด์ | คำอธิบาย | ประเภท | จำเป็น |
| X-Access-Token | OAuth 2.0 Access Token สำหรับการรับรองความถูกต้องของเซิร์ฟเวอร์แอป (ดู ออก OAuth Token) | String | Y |
| ISCRYPT | ข้อมูลถูกเข้ารหัสหรือไม่ (0 = ไม่เข้ารหัส) (ต้องส่ง 0 เสมอ) | Integer | Y |
เนื้อหาคำขอ
| ชื่อฟิลด์ | คำอธิบาย | ประเภท | จำเป็น |
| appid | App ID | String | Y |
| idp_index | รหัสดัชนี IdP (โปรดดู รายการ IdP) | Integer | Y |
| idp_user_id | ตัวระบุผู้ใช้เฉพาะของ IdP | String | Y |
| player_id | Player ID | Integer | Y |
ตัวอย่างคำขอ
{
"appid": "com.com2us.hivesdk.normal.freefull.apple.global.ios.universal",
"idp_index": 2,
"idp_user_id": "fb_12345678",
"player_id": 100000001
}
เนื้อหาการตอบกลับ
| ชื่อฟิลด์ | คำอธิบาย | ประเภท |
| result_code | รหัสตอบกลับ รายละเอียด | Integer |
| result_msg | ข้อความผลลัพธ์ | String |
| token_validation | ผลการตรวจสอบ JWT (ข้อผิดพลาดการตรวจสอบ JWT) | Object |
| token_validation.result_code | รหัสผลการตรวจสอบ JWT | Integer |
| token_validation.result_msg | ข้อความผลการตรวจสอบ JWT | String |
ตัวอย่างการตอบกลับ
สำเร็จ
{
"result_code": 0,
"result_msg": "SUCCESS",
"token_validation": {
"result_code": 0,
"result_msg": "success"
}
}
รหัสตอบกลับ
| ค่ารหัส | คำอธิบาย |
| 0 | สำเร็จ |
| 2499 | การตรวจสอบ JWT ล้มเหลว (ดู token_validation) |
| 4006 | ไม่มีข้อมูล IdP ที่เชื่อมโยง |
| 4200 | ไม่มี IdP นี้ |
| 5000 | ข้อผิดพลาดภายในเซิร์ฟเวอร์ |
| 7000 | โทเค็นไม่ถูกต้อง |
ลบบัญชี
ลบบัญชีผู้เล่น ต้องเรียกใช้หลังจากเข้าสู่ระบบผ่าน API การเข้าสู่ระบบด้วย IdP เท่านั้น
API นี้ต้องตรวจสอบโทเค็น จึงต้องดำเนินการต่อไปนี้ล่วงหน้า
- เมื่อเรียก API การเข้าสู่ระบบด้วย IdP ให้ตั้งค่า
require_token เป็น true - จัดเก็บค่า
Authorization ที่ได้รับจากส่วนหัวการตอบกลับของ API การเข้าสู่ระบบด้วย IdP - เมื่อเรียก API นี้ ให้ใส่ค่า
Authorization ที่จัดเก็บไว้ข้างต้นในส่วนหัวคำขอ
Warning
การลบบัญชีไม่สามารถย้อนกลับได้ โปรดแจ้งให้ผู้ใช้ทราบอย่างเพียงพอก่อนลบ
URL คำขอ
ส่วนหัวคำขอ
| ชื่อฟิลด์ | คำอธิบาย | ประเภท | จำเป็น |
| X-Access-Token | OAuth 2.0 Access Token สำหรับการรับรองความถูกต้องของเซิร์ฟเวอร์แอป (ดู ออก OAuth Token) | String | Y |
| ISCRYPT | ข้อมูลถูกเข้ารหัสหรือไม่ (0 = ไม่เข้ารหัส) (ต้องส่ง 0 เสมอ) | Integer | Y |
| Authorization | เซสชันโทเค็นที่ได้รับผ่านส่วนหัวการตอบกลับหลังตั้งค่า require_token: true เมื่อเรียก การเข้าสู่ระบบด้วย IdP | String | Y |
เนื้อหาคำขอ
| ชื่อฟิลด์ | คำอธิบาย | ประเภท | จำเป็น |
| appid | App ID | String | Y |
| player_id | Player ID ที่จะลบ | Integer | Y |
| did | Device ID กำหนดเป็น 0 คงที่ | Integer | Y |
ตัวอย่างคำขอ
{
"appid": "com.com2us.hivesdk.normal.freefull.apple.global.ios.universal",
"player_id": 100000001,
"did": 0
}
เนื้อหาการตอบกลับ
| ชื่อฟิลด์ | คำอธิบาย | ประเภท |
| result_code | รหัสตอบกลับ รายละเอียด | Integer |
| result_msg | ข้อความผลลัพธ์ | String |
| token_validation | ผลการตรวจสอบ JWT (ข้อผิดพลาดการตรวจสอบ JWT) | Object |
| token_validation.result_code | รหัสผลการตรวจสอบ JWT | Integer |
| token_validation.result_msg | ข้อความผลการตรวจสอบ JWT | String |
ตัวอย่างการตอบกลับ
{
"result_code": 0,
"result_msg": "SUCCESS",
"token_validation": {
"result_code": 0,
"result_msg": "success"
}
}
รหัสตอบกลับ
| ค่ารหัส | คำอธิบาย |
| 0 | สำเร็จ |
| 2499 | การตรวจสอบ JWT ล้มเหลว (ดู token_validation) |
| 5000 | ข้อผิดพลาดภายในเซิร์ฟเวอร์ |
| 7000 | โทเค็นไม่ถูกต้อง |
| 7001 | ไม่มีโทเค็นในเฮดเดอร์ |
Note
เมื่อการตรวจสอบ JWT ล้มเหลว คุณสามารถดูข้อมูลข้อผิดพลาดโดยละเอียดได้ในฟิลด์ token_validation โปรดดู รหัสข้อผิดพลาดการตรวจสอบ JWT สำหรับรายละเอียด