การรับรองความถูกต้อง OAuth 2.0

📘

OAuth 2.0 ใช้ได้เฉพาะในเอ็นพอยต์ /ads

เมื่อรวมการรายงานคำสั่งซื้อผ่าน API คุณจะต้องรวมเอ็นพอยต์ /orders เข้ากับการตรวจสอบสิทธิ์ขั้นพื้นฐานและคีย์ API ลับของคุณ

รหัสลูกค้าและความลับของลูกค้า

AD_ID client_id และการ client_secret จะได้รับจากผู้จัดการบัญชีด้านเทคนิคของคุณ Client Secret เป็นความลับและไม่ควรแชร์

การขอโทเค็นการเข้าถึง

ในการรับโทเค็นการเข้าถึง คุณต้องส่งคำขอที่มี client_id และ client_secretในการทำเช่นนั้น ผู้ค้าปลีกต้องส่งคำขอ POST ไปยังเอ็นพอยต์ CitrusAd Authorization Server:

https://$BASE_URL/v1/oauth2/token

📘

/oauth2/token ให้เฉพาะโทเค็นที่เกี่ยวข้องเท่านั้น คุณจะใช้โทเค็นเหล่านี้เพื่อโต้ตอบกับเอ็นพอยต์การรวมต่างๆ

คำขอของคุณจะต้องมีการอนุญาตพื้นฐานที่ส่งผ่านส่วนหัวคำขอการอนุญาตที่มี client_id และ client_secret base64 ที่เข้ารหัส:

Authorization: "Basic" + base64encode(client_id + ":" + client_secret)

คุณจะต้องเพิ่มพารามิเตอร์ต่อไปนี้โดยใช้ application/x-www-form-urlencoded รูปแบบในช่องข้อความคำขอของ HTTP:

grant_type=client_credentials

คําขอจะมีลักษณะดังต่อไปนี้:

POST https://$BASE_URL/v1/oauth2/token
Content-Type: application/x-www-form-urlencoded
Authorization: Basic <base64 encoded id+key>
grant_type=client_credentials

การรับโทเค็นการเข้าถึงของคุณ

การตอบสนองจะมีข้อมูลต่อไปนี้

  • access_token: โทเค็นการเข้าถึงที่จะใช้เมื่อเรียก CitrusAd API
  • expires_in: จำนวนเงินเป็นวินาทีจนกว่าโทเค็นการเข้าถึงจะหมดอายุ
  • token_type: ประเภทโทเค็นที่ส่งกลับ จะเป็นผู้ถือเสมอในกรณีนี้

ตัวอย่างคําตอบอยู่ด้านล่าง

{
  "access_token": "xxxxx.yyyyy.zzzzz",
  "expires_in": 3600,
  "token_type": "Bearer"
}

การใช้โทเค็น

การเรียกกับเอ็นพอยต์ CitrusAd API สามารถทำได้โดยเพียงแค่เพิ่มโทเค็นการเข้าถึงที่สร้างไปยังส่วนหัวการอนุญาตตามคำขอ
Authorization: “Bearer “ <access_token>

POST $BASE_URL/v1/ads/generate HTTP/1.1
accept: application/json
content-type: application/json
Authorization: Bearer <access_token>
{
    "customerId": "wertg5432a",
    "sessionId": "ec9-4e07-881d-3e9", 
    "placement": "category",
    "catalogId": "628dbe95-2ec9-4e07-881d-3e9f92ab2e0b",
    "productFilters": [
         ["category:Cupboard/Snacks"]
    ],
    "options": {
                             "filterMode": "AndOr"
                             },
    "maxNumberOfAds": 3
}

ข้อผิดพลาดในคำขอ

ไคลเอ็นต์ไม่ถูกต้อง

หาก client_id หรือ client_secret ที่ส่งในคำขอไม่ถูกต้อง คุณจะได้รับการตอบกลับอย่างนี้:

{
  "error": "invalid_client"
}

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

{
  "error": "invalid_request"
}

ตรวจสอบให้แน่ใจว่า:

  • รวมเพียง grant_type=client_credentials ไปยังช่องข้อความคำขอ
  • ตั้งค่า Content-Type ไปยังส่วนหัวของคําขอ