ข้อมูลอ้างอิงเซิร์ฟเวอร์

Stay organized with collections Save and categorize content based on your preferences.

คุณจะใช้งานเซิร์ฟเวอร์หรือไม่ก็ได้ ใช้บริการรหัสอินสแตนซ์หากต้องการดําเนินการต่อไปนี้

รับข้อมูลเกี่ยวกับอินสแตนซ์ของแอป

หากต้องการทราบข้อมูลเกี่ยวกับอินสแตนซ์ของแอป ให้เรียกใช้บริการรหัสอินสแตนซ์ที่ปลายทางนี้โดยระบุโทเค็นของอินสแตนซ์แอปดังที่แสดงด้านล่างนี้

 https://iid.googleapis.com/iid/info/IID_TOKEN

พารามิเตอร์

  • Authorization: key=YOUR_API_KEY ตั้งค่าพารามิเตอร์นี้ในส่วนหัว
  • [ไม่บังคับ] บูลีน details: ตั้งค่าพารามิเตอร์การค้นหานี้เป็น true เพื่อรับข้อมูลการสมัครใช้บริการหัวข้อ FCM หรือ GCM (หากมี) ที่เชื่อมโยงกับโทเค็นนี้ เมื่อไม่ได้ระบุ ระบบจะใช้ค่าเริ่มต้นเป็น false

ผลลัพธ์

เมื่อสําเร็จ การเรียกใช้จะแสดงสถานะ HTTP 200 และออบเจ็กต์ JSON ที่มีสิ่งต่อไปนี้

  • application - ชื่อแพ็กเกจที่เชื่อมโยงกับโทเค็น
  • authorizedEntity - projectId ได้รับอนุญาตให้ส่งไปยังโทเค็น
  • applicationVersion - เวอร์ชันของแอปพลิเคชัน
  • appSigner - sha1 ลายนิ้วมือสําหรับลายเซ็นที่ใช้กับแพ็กเกจ ระบุว่าฝ่ายใดรับรองแอป เช่น Play Store
  • platform - แสดงผล ANDROID, IOS หรือ CHROME เพื่อแสดงแพลตฟอร์มของอุปกรณ์ที่เป็นโทเค็น

หากตั้งค่าแฟล็ก details ไว้ ให้ทําดังนี้

  • rel - ความสัมพันธ์ที่เชื่อมโยงกับโทเค็น เช่น รายการการติดตามหัวข้อ

ตัวอย่างคําขอ GET

https://iid.googleapis.com/iid/info/nKctODamlM4:CKrh_PC8kIb7O...clJONHoA?Authorization:key=AIzaSyZ-1u...0GBYzPu7Udno5aA

ตัวอย่างผลการค้นหา

HTTP 200 OK
{
  "application":"com.iid.example",
  "authorizedEntity":"123456782354",
  "platform":"Android",
  "appSigner":"1a2bc3d4e5"
  "rel":{
    "topics":{
      "topicname1":{"addDate":"2015-07-30"},
      "topicname2":{"addDate":"2015-07-30"},
      "topicname3":{"addDate":"2015-07-30"},
      "topicname4":{"addDate":"2015-07-30"}
    }
  }
}

สร้างความสัมพันธ์สําหรับอินสแตนซ์ของแอป

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

สร้างการแมปความสัมพันธ์สําหรับอินสแตนซ์แอป

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

 https://iid.googleapis.com/iid/v1/IID_TOKEN/rel/topics/TOPIC_NAME

พารามิเตอร์

  • Authorization: key=YOUR_API_KEY ตั้งค่าพารามิเตอร์นี้ในส่วนหัว

ผลลัพธ์

เมื่อสําเร็จ การเรียกใช้จะแสดงสถานะ HTTP 200

ตัวอย่างคําขอ POST

https://iid.googleapis.com/iid/v1/nKctODamlM4:CKrh_PC8kIb7O...clJONHoA/rel/topics/movies
Content-Type:application/json
Content-Length: 0
Authorization:key=AIzaSyZ-1u...0GBYzPu7Udno5aA

ตัวอย่างผลการค้นหา

HTTP 200 OK
{}

จัดการการแมปความสัมพันธ์สําหรับอินสแตนซ์แอปหลายรายการ

วิธีการแบบกลุ่มของอินสแตนซ์รหัสบริการช่วยให้คุณจัดการอินสแตนซ์ของแอปแบบกลุ่มได้ ตัวอย่างเช่น คุณสามารถเพิ่มหรือนําอินสแตนซ์แอปออกหลายรายการพร้อมกันในหัวข้อ FCM หรือ GCM หากต้องการอัปเดตอินสแตนซ์ของแอปสูงสุด 1,000 รายการต่อการเรียก API โปรดเรียกใช้บริการรหัสอินสแตนซ์ที่ปลายทางนี้โดยระบุโทเค็นอินสแตนซ์แอปในส่วนเนื้อหาของ JSON

 https://iid.googleapis.com/iid/v1:batchAdd

 https://iid.googleapis.com/iid/v1:batchRemove

พารามิเตอร์

  • Authorization: key=YOUR_API_KEY ตั้งค่าพารามิเตอร์นี้ในส่วนหัว
  • to : ชื่อหัวข้อ
  • registration_tokens : อาร์เรย์ของโทเค็น IID สําหรับอินสแตนซ์แอปที่คุณต้องการเพิ่มหรือนําออก

ผลลัพธ์

เมื่อสําเร็จ การเรียกใช้จะแสดงสถานะ HTTP 200 ผลลัพธ์ที่ว่างเปล่าบ่งชี้ถึงการสมัครใช้บริการที่ประสบความสําเร็จสําหรับโทเค็น สําหรับการสมัครใช้บริการที่ไม่สําเร็จ ผลการค้นหาจะมีรหัสข้อผิดพลาดอย่างใดอย่างหนึ่งต่อไปนี้

  • NOT_FOUND — โทเค็นการลงทะเบียนถูกลบออกแล้วหรือถอนการติดตั้งแอปแล้ว
  • ดูข้อมูลที่ไม่ถูกต้องสําหรับโทเค็นการลงทะเบียนที่ระบุสําหรับรหัสผู้ส่งไม่ได้
  • ภายใน — เซิร์ฟเวอร์แบ็กเอนด์ล้มเหลวโดยไม่ทราบสาเหตุ ลองส่งคําขออีกครั้ง
  • TOO_MANY_TOPICS — จํานวนหัวข้อต่ออินสแตนซ์ของแอปมากเกินไป
  • RESOURCE_EXHAUSTED — การสมัครใช้บริการหรือการยกเลิกการสมัครใช้บริการจํานวนมากเกินไปในช่วงเวลาสั้นๆ ลองอีกครั้งโดยใช้ Exponential Backoff

ตัวอย่างคําขอ POST

https://iid.googleapis.com/iid/v1:batchAdd
Content-Type:application/json
Authorization:key=API_KEY
{
   "to": "/topics/movies",
   "registration_tokens": ["nKctODamlM4:CKrh_PC8kIb7O...", "1uoasi24:9jsjwuw...", "798aywu:cba420..."],
}

ตัวอย่างผลการค้นหา

HTTP 200 OK
{
  "results":[
    {},
    {"error":"NOT_FOUND"},
    {},
  ]
}

สร้างโทเค็นการลงทะเบียนสําหรับโทเค็น APN

คุณสามารถใช้เมธอด batchImport ของอินสแตนซ์รหัสเพื่อนําเข้าโทเค็น APN ที่มีอยู่ของ iOS ไปยัง Google Cloud Messaging หรือ Firebase Cloud Messaging ได้ ซึ่งจะแมปกับโทเค็นการลงทะเบียนที่ถูกต้อง เรียกบริการรหัสอินสแตนซ์ที่ปลายทางนี้ โดยแสดงรายการโทเค็น APN ในเนื้อหาของ JSON

 https://iid.googleapis.com/iid/v1:batchImport

เนื้อหาการตอบกลับมีอาร์เรย์ของโทเค็นการลงทะเบียนรหัสอินสแตนซ์พร้อมใช้งานสําหรับส่งข้อความ FCM หรือ GCM ไปยังโทเค็นอุปกรณ์ APN ที่เกี่ยวข้อง

พารามิเตอร์

  • Authorization: key=YOUR_API_KEY ตั้งค่าพารามิเตอร์นี้ในส่วนหัว
  • application : รหัสชุดของแอป
  • sandbox : บูลีนเพื่อระบุสภาพแวดล้อมของแซนด์บ็อกซ์ (TRUE) หรือเวอร์ชันที่ใช้งานจริง (FALSE)
  • apns_tokens : อาร์เรย์ของโทเค็น APN สําหรับอินสแตนซ์แอปที่คุณต้องการเพิ่มหรือนําออก โทเค็นสูงสุด 100 รายการต่อคําขอ

ผลลัพธ์

เมื่อสําเร็จ การเรียกใช้จะแสดงสถานะ HTTP 200 และเนื้อความผลลัพธ์ JSON สําหรับโทเค็น AMP แต่ละคําขอที่ให้ไว้ในคําขอ รายการผลลัพธ์ประกอบด้วย

  • โทเค็น APN
  • สถานะ ใช้ได้ หรือข้อความแสดงข้อผิดพลาดที่อธิบายความล้มเหลว
  • เพื่อผลลัพธ์ที่สําเร็จ โทเค็นการลงทะเบียนที่ FCM หรือ GCM แมปกับโทเค็น APN

ตัวอย่างคําขอ POST

https://iid.googleapis.com/iid/v1:batchImport
{
  "application": "com.google.FCMTestApp",
  "sandbox":false,
  "apns_tokens":[
      "368dde283db539abc4a6419b1795b6131194703b816e4f624ffa12",
      "76b39c2b2ceaadee8400b8868c2f45325ab9831c1998ed70859d86"
   ]
  }
}

ตัวอย่างผลการค้นหา

HTTP 200 OK
{
 "results":[
       {
        "apns_token": "368dde283db539abc4a6419b1795b6131194703b816e4f624ffa12",
         "status": "OK",
         "registration_token":"nKctODamlM4:CKrh_PC8kIb7O...clJONHoA"
       },
       {
         "apns_token": "76b39c2b2ceaadee8400b8868c2f45325ab9831c1998ed70859d86",
         "status":"Internal Server Error"
        },
     ]
  }

จัดการโทเค็นการลงทะเบียนสําหรับการสมัครใช้บริการ Push

คุณสามารถนําเข้าการพุชที่มีอยู่สําหรับ Firebase Cloud Messaging ได้โดยใช้เมธอดเว็บของบริการอินสแตนซ์รหัส คุณสามารถอัปเดตและลบได้อีกด้วย

เมื่อนําเข้าการสมัครใช้บริการแบบพุช คุณจะได้รับโทเค็นการลงทะเบียน โทเค็นนี้ช่วยให้คุณใช้ฟีเจอร์ FCM ได้ เช่น การรับส่งข้อความตามหัวข้อและการรับส่งข้อความแบบกลุ่มของอุปกรณ์ เพื่อกําหนดเป้าหมายการแจ้งเตือนไปยังเว็บแอป

นําเข้าการสมัครใช้บริการ Push

คุณนําเข้าการสมัครใช้บริการแบบพุชได้โดยใช้ปลายทางเว็บของ InstanceID

 https://iid.googleapis.com/v1/web/iid

คําขอต้องมีส่วนหัวการให้สิทธิ์ตั้งค่าเป็นโทเค็นเพื่อการเข้าถึง OAuth 2.0 ส่วนหัวคีย์คริปโตที่ตั้งค่าเป็นคีย์เซิร์ฟเวอร์แอปพลิเคชันและออบเจ็กต์ PushSubscription ในเนื้อหาคําขอ

ส่วนเนื้อหาของการตอบกลับมีโทเค็นการลงทะเบียนที่พร้อมสําหรับส่งข้อความ FCM หรือ GCM ไปยังอินสแตนซ์เว็บแอปที่เกี่ยวข้องโดยไม่ต้องเข้ารหัสเพย์โหลด

อัปโหลดคู่คีย์ VAPID ไปยังคอนโซล

หากต้องการนําเข้าคีย์ คุณต้องมีสิทธิ์เข้าถึงระดับโปรเจ็กต์ของ Firebase นําเข้าคีย์สาธารณะและคีย์ส่วนตัวที่มีอยู่ในรูปแบบที่เข้ารหัสแบบ URL ที่ปลอดภัยของ Base64:

  1. เปิดแท็บ Cloud Messaging ในแผงการตั้งค่าคอนโซล Firebase และเลื่อนไปที่ส่วนการกําหนดค่าเว็บ
  2. ในแท็บใบรับรองพุชจากเว็บ ให้ค้นหาและเลือกข้อความลิงก์ "นําเข้าคู่คีย์ที่มีอยู่"
  3. ในกล่องโต้ตอบนําเข้าคู่คีย์ ให้ระบุคีย์สาธารณะและคีย์ส่วนตัวในช่องที่เกี่ยวข้อง แล้วคลิกนําเข้า คอนโซลจะแสดงสตริงคีย์สาธารณะและวันที่ที่เพิ่ม

เรียกโทเค็น OAuth2: ใช้ข้อมูลเข้าสู่ระบบเพื่อสร้างโทเค็นเพื่อการเข้าถึง

หากต้องการสร้างโทเค็นเพื่อการเข้าถึงสําหรับคําขอ คุณจะต้องย่อโทเค็นเพื่อการเข้าถึงแล้วเพิ่มลงในคําขอ HTTP

โหนด.js

 function getAccessToken() {
  return admin.credential.applicationDefault().getAccessToken()
      .then(accessToken => {
        return accessToken.access_token;
      })
      .catch(err => {
        console.error('Unable to get access token');
        console.error(err);
      });
}

Python

def _get_access_token():
  """Retrieve a valid access token that can be used to authorize requests.

  :return: Access token.
  """
  credentials = ServiceAccountCredentials.from_json_keyfile_name(
      'service-account.json', SCOPES)
  access_token_info = credentials.get_access_token()
  return access_token_info.access_token

Java

private static String getAccessToken() throws IOException {
  GoogleCredentials googleCredentials = GoogleCredentials
          .fromStream(new FileInputStream("service-account.json"))
          .createScoped(Arrays.asList(SCOPES));
  googleCredentials.refreshAccessToken();
  return googleCredentials.getAccessToken().getTokenValue();
}

หากต้องการให้สิทธิ์เข้าถึง FCM โปรดขอขอบเขต https://www.googleapis.com/auth/firebase.messaging

พารามิเตอร์

  • การให้สิทธิ์: Bearer <access_token> ตั้งค่าพารามิเตอร์นี้ในส่วนหัว
  • คีย์การเข้ารหัส: p256ecdsa=APPLICATION_PUBLIC_KEY ตั้งค่าพารามิเตอร์นี้ในส่วนหัว
  • เนื้อหาของคําขอ: PushSubscription.toJson() ส่งการสมัครใช้บริการ Push ไปยังส่วนเนื้อหา HTTP โดยไม่ต้องแยกวิเคราะห์ เนื้อหาตรงกับการเข้ารหัส W3C ของ PushSubscription

คำตอบ

เมื่อสําเร็จ การเรียกจะแสดงสถานะ HTTP 200 OK และเนื้อหาผลลัพธ์ JSON ที่มีโทเค็น IID

ตัวอย่างคําขอ POST

 https://iid.googleapis.com/v1/web/iid
 Content-Type:application/json
 Authorization:Bearer ya29.ElqKBGN2Ri_Uz...HnS_uNreA
 Crypto-Key:p256ecdsa=BFv5XHxdkZgpQzCb-...8uI42kf4A4USEIMo
 {
   "endpoint": "https://fcm.googleapis.com/fcm/send/dS4xerbSlqU:APb...aRs4QP",
   "keys": {
         "auth": "7cdY...xxjwz46Q",
         "p256dh": "BH7xPjScJe...z9lbIZDmOV_c"
    }
 }

ตัวอย่างผลการค้นหา

HTTP 200 OK
{
 "token":"KctODamlM4:CKrh_PC...cl"
}

อัปเดตการสมัครใช้บริการ Push

คุณสามารถอัปเดตการสมัครใช้บริการแบบพุชที่เชื่อมโยงกับโทเค็นการลงทะเบียนได้โดยใช้ปลายทางต่อไปนี้

 https://iid.googleapis.com/v1/web/iid/REGISTRATION_TOKEN:refresh

พารามิเตอร์

  • การให้สิทธิ์: Bearer <access_token> ตั้งค่าพารามิเตอร์นี้ในส่วนหัว
  • คีย์การเข้ารหัส: p256ecdsa=APPLICATION_PUBLIC_KEY ตั้งค่าพารามิเตอร์นี้ในส่วนหัว
  • เนื้อหาของคําขอ: PushSubscription.toJson() ส่งการสมัครใช้บริการ Push ไปยังส่วนเนื้อหา HTTP โดยไม่ต้องแยกวิเคราะห์ เนื้อหาตรงกับการเข้ารหัส W3C ของ PushSubscription

ผลลัพธ์

เมื่อสําเร็จ การเรียกใช้จะแสดงสถานะ HTTP 200 และโทเค็นการลงทะเบียน ซึ่งอาจเป็นโทเค็นเดียวกันกับที่คุณส่งในคําขอหรือโทเค็นใหม่

HTTP 200 OK
{
 "token":"KctODamlM4:CKrh_PC...cl"
}

ตัวอย่างคําขอ POST

 https://iid.googleapis.com/v1/web/iid/KctODamlM4:CKrh_PC...cl:refresh
 Content-Type:application/json
 Authorization:Bearer ya29.ElqKBGN2Ri_Uz...HnS_uNreA
 Crypto-Key:p256ecdsa=BFv5XHxdkZgpQzCb-...8uI42kf4A4USEIMo
 {
   "endpoint": "https://fcm.googleapis.com/fcm/send/dS4xerbSlqU:APb...aRs4QP",
   "keys": {
         "auth": "7cdY...xxjwz46Q"",
         "p256dh": "BH7xPjScJe...z9lbIZDmOV_c"
    }
 }

ตัวอย่างผลการค้นหา

 HTTP 200 OK
 {
  "token":"KctODamlM4:CI2k_HHw...3P1"
 }

ลบการสมัครใช้บริการ Push

คําขอ DELETE จะนํารายละเอียดการสมัครใช้บริการ Push ออกจากฐานข้อมูล FCM คุณจะยังคงรับข้อความในเว็บแอปพลิเคชันได้โดยใช้โปรโตคอล Push API

หากต้องการลบการสมัครใช้บริการแบบพุช ให้ส่งคําขอ DELETE ไปที่

 https://iid.googleapis.com/v1/web/iid/REGISTRATION_TOKEN

ตัวอย่างคําขอ DELETE

 https://iid.googleapis.com/v1/web/iid/KctODamlM4:CI2k_HHw...3P1
 Authorization:Bearer ya29.ElqKBGN2Ri_Uz...HnS_uNreA

ตัวอย่างผลการค้นหา

 HTTP 200 OK {}

การตอบกลับข้อผิดพลาด

การเรียก API เซิร์ฟเวอร์อินสแตนซ์ของอินสแตนซ์จะแสดงผลรหัสข้อผิดพลาด HTTP ต่อไปนี้

  • HTTP status 400 (Bad request) - พารามิเตอร์คําขอหายไปหรือไม่ถูกต้อง ตรวจสอบข้อความแสดงข้อผิดพลาดเพื่อดูข้อมูลโดยละเอียด
  • HTTP status 401 (Unauthorized) - ส่วนหัวการให้สิทธิ์ไม่ถูกต้อง
  • HTTP status 403 (Forbidden) - ส่วนหัวการให้สิทธิ์ไม่ตรงกับ authorizedEntity
  • HTTP status 404 (Not found) - ไม่พบเส้นทาง HTTP หรือโทเค็น IID ที่ไม่ถูกต้อง ตรวจสอบข้อความแสดงข้อผิดพลาดเพื่อดูข้อมูลโดยละเอียด
  • HTTP status 503 (Service unavailable) - บริการไม่พร้อมใช้งาน ลองส่งคําขอซ้ําด้วย Exponential Backoff