แก้ไขการกำหนดค่าระยะไกลโดยทางโปรแกรม

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

โดยใช้ ระยะไกล Config REST API หรือ ผู้ดูแลระบบ SDKs อธิบายไว้ในคู่มือนี้คุณสามารถหลีกเลี่ยงการจัดการแม่แบบในคอนโซล Firebase โดยตรงบูรณาการระยะไกลการเปลี่ยนแปลงการกำหนดค่าในกระบวนการของคุณเอง ตัวอย่างเช่น ด้วย API แบ็กเอนด์การกำหนดค่าระยะไกล คุณสามารถ:

  • กำหนดตารางการปรับปรุงการกำหนดค่าระยะไกล เมื่อใช้การเรียก API ร่วมกับงาน cron คุณสามารถเปลี่ยนค่าการกำหนดค่าระยะไกลตามกำหนดเวลาปกติได้
  • รุ่นที่นำเข้าปรับแต่งค่าเพื่อการเปลี่ยนแปลงได้อย่างมีประสิทธิภาพจากระบบที่เป็นกรรมสิทธิ์ของคุณเองเพื่อ Firebase ระยะไกล Config
  • ใช้ระยะไกลการกำหนดค่าที่มีฟังก์ชั่นคลาวด์สำหรับ Firebase เปลี่ยนค่าในแอปของคุณขึ้นอยู่กับเหตุการณ์ที่เกิดขึ้นที่ฝั่งเซิร์ฟเวอร์ ตัวอย่างเช่น คุณสามารถใช้การกำหนดค่าระยะไกลเพื่อโปรโมตคุณลักษณะใหม่ในแอปของคุณ แล้วปิดการโปรโมตนั้นโดยอัตโนมัติเมื่อคุณตรวจพบว่ามีคนโต้ตอบกับคุณลักษณะใหม่มากพอ

ส่วนต่อไปนี้ของคู่มือนี้อธิบายการดำเนินการที่คุณสามารถทำได้ด้วย Remote Config backend API หากต้องการตรวจสอบโค้ดบางส่วนที่ทำงานเหล่านี้ผ่าน REST API โปรดดูตัวอย่างแอปต่อไปนี้

แก้ไขการกำหนดค่าระยะไกลโดยใช้ Firebase Admin SDK

Admin SDK คือชุดของไลบรารีเซิร์ฟเวอร์ที่ให้คุณโต้ตอบกับ Firebase จากสภาพแวดล้อมที่มีสิทธิพิเศษ นอกเหนือจากการดำเนินการอัปเดตการกำหนดค่าระยะไกลแล้ว Admin SDK ยังเปิดใช้การสร้างและยืนยันโทเค็นการตรวจสอบสิทธิ์ของ Firebase การอ่านและการเขียนจากฐานข้อมูลเรียลไทม์ และอื่นๆ ต้องการเรียนรู้เพิ่มเติมเกี่ยวกับข้อกำหนดเบื้องต้น SDK ผู้ดูแลระบบและการติดตั้งให้ดูที่การ เพิ่ม Firebase SDK ผู้ดูแลระบบเซิร์ฟเวอร์ของคุณ

ในโฟลว์การกำหนดค่าระยะไกลทั่วไป คุณอาจได้รับเทมเพลตปัจจุบัน แก้ไขพารามิเตอร์หรือกลุ่มพารามิเตอร์และเงื่อนไขบางอย่าง ตรวจสอบความถูกต้องของเทมเพลต แล้วเผยแพร่ ก่อนทำการเรียก API เหล่านั้น คุณต้องอนุญาตคำขอจาก SDK

เริ่มต้น SDK และอนุญาตคำขอ API

เมื่อคุณเริ่มต้น SDK ผู้ดูแลระบบที่มีพารามิเตอร์ไม่มี SDK ใช้ Google เริ่มต้นการประยุกต์ใช้ข้อมูลประจำตัว และอ่านตัวเลือกจาก FIREBASE_CONFIG ตัวแปรสภาพแวดล้อม ถ้าเนื้อหาของ FIREBASE_CONFIG ตัวแปรเริ่มต้นด้วย { มันจะถูกแยกเป็นวัตถุ JSON มิฉะนั้น SDK จะถือว่าสตริงนั้นเป็นชื่อของไฟล์ JSON ที่มีตัวเลือก

ตัวอย่างเช่น:

Node.js

const admin = require('firebase-admin');
admin.initializeApp();

Java

FileInputStream serviceAccount = new FileInputStream("service-account.json");
FirebaseOptions options = FirebaseOptions.builder()
        .setCredentials(GoogleCredentials.fromStream(serviceAccount))
        .build();
FirebaseApp.initializeApp(options);

รับเทมเพลต Remote Config ปัจจุบัน

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

คุณสามารถใช้แบ็กเอนด์ API เพื่อรับเวอร์ชันที่ใช้งานปัจจุบันของเทมเพลต Remote Config ในรูปแบบ JSON ในการรับเทมเพลต:

Node.js

function getTemplate() {
  var config = admin.remoteConfig();
  config.getTemplate()
      .then(function (template) {
        console.log('ETag from server: ' + template.etag);
        var templateStr = JSON.stringify(template);
        fs.writeFileSync('config.json', templateStr);
      })
      .catch(function (err) {
        console.error('Unable to get template');
        console.error(err);
      });
}

Java

Template template = FirebaseRemoteConfig.getInstance().getTemplateAsync().get();
// See the ETag of the fetched template.
System.out.println("ETag from server: " + template.getETag());

แก้ไขพารามิเตอร์การกำหนดค่าระยะไกล

คุณสามารถแก้ไขและเพิ่มพารามิเตอร์การกำหนดค่าระยะไกลและกลุ่มพารามิเตอร์โดยทางโปรแกรม ตัวอย่างเช่น ในกลุ่มพารามิเตอร์ที่มีอยู่ชื่อ "new_menu" คุณสามารถเพิ่มพารามิเตอร์เพื่อควบคุมการแสดงข้อมูลตามฤดูกาลได้:

Node.js

function addParameterToGroup(template) {
  template.parameterGroups['new_menu'].parameters['spring_season'] = {
    defaultValue: {
      useInAppDefault: true
    },
    description: 'spring season menu visibility.',
  };
}

Java

template.getParameterGroups().get("new_menu").getParameters()
        .put("spring_season", new Parameter()
                .setDefaultValue(ParameterValue.inAppDefault())
                .setDescription("spring season menu visibility.")
        );

API ช่วยให้คุณสร้างพารามิเตอร์และกลุ่มพารามิเตอร์ใหม่ หรือแก้ไขค่าเริ่มต้น ค่าตามเงื่อนไข และคำอธิบาย ในทุกกรณี คุณต้องเผยแพร่เทมเพลตอย่างชัดเจนหลังจากทำการแก้ไข

แก้ไขเงื่อนไขการกำหนดค่าระยะไกล

คุณสามารถแก้ไขและเพิ่มเงื่อนไขการกำหนดค่าระยะไกลและค่าตามเงื่อนไขโดยทางโปรแกรม ตัวอย่างเช่น ในการเพิ่มเงื่อนไขใหม่:

Node.js

function addNewCondition(template) {
  template.conditions.push({
    name: 'android_en',
    expression: 'device.os == \'android\' && device.country in [\'us\', \'uk\']',
    tagColor: 'BLUE',
  });
}

Java

template.getConditions().add(new Condition("android_en",
        "device.os == 'android' && device.country in ['us', 'uk']", TagColor.BLUE));

ในทุกกรณี คุณต้องเผยแพร่เทมเพลตอย่างชัดเจนหลังจากทำการแก้ไข

API แบ็กเอนด์การกำหนดค่าระยะไกลมีเงื่อนไขและตัวดำเนินการเปรียบเทียบหลายอย่างที่คุณสามารถใช้เพื่อเปลี่ยนลักษณะการทำงานและลักษณะที่ปรากฏของแอปของคุณ ต้องการเรียนรู้เพิ่มเติมเกี่ยวกับเงื่อนไขและผู้ประกอบการได้รับการสนับสนุนสำหรับเงื่อนไขเหล่านี้ให้ดู อ้างอิงนิพจน์เงื่อนไข

ตรวจสอบความถูกต้องของแม่แบบการกำหนดค่าระยะไกล

คุณสามารถเลือกตรวจสอบการอัปเดตของคุณก่อนที่จะเผยแพร่ ดังที่แสดง:

Node.js

function validateTemplate(template) {
  admin.remoteConfig().validateTemplate(template)
      .then(function (validatedTemplate) {
        // The template is valid and safe to use.
        console.log('Template was valid and safe to use');
      })
      .catch(function (err) {
        console.error('Template is invalid and cannot be published');
        console.error(err);
      });
}

Java

try {
  Template validatedTemplate = FirebaseRemoteConfig.getInstance()
          .validateTemplateAsync(template).get();
  System.out.println("Template was valid and safe to use");
} catch (ExecutionException e) {
  if (e.getCause() instanceof FirebaseRemoteConfigException) {
    FirebaseRemoteConfigException rcError = (FirebaseRemoteConfigException) e.getCause();
    System.out.println("Template is invalid and cannot be published");
    System.out.println(rcError.getMessage());
  }
}

ขั้นตอนการตรวจสอบความถูกต้องนี้จะตรวจสอบข้อผิดพลาด เช่น คีย์ที่ซ้ำกันสำหรับพารามิเตอร์และเงื่อนไข ชื่อเงื่อนไขที่ไม่ถูกต้องหรือเงื่อนไขที่ไม่มีอยู่จริง หรือ etag ที่จัดรูปแบบไม่ถูกต้อง ยกตัวอย่างเช่นการร้องขอที่มีมากกว่าจำนวนที่ได้รับอนุญาตของคีย์-2000-จะกลับข้อความข้อผิดพลาด Param count too large

เผยแพร่เทมเพลตการกำหนดค่าระยะไกล

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

ถ้าจำเป็นคุณสามารถใช้ REST API เพื่อ ย้อนกลับไปยังรุ่นก่อนหน้านี้ เพื่อลดความเสี่ยงของความผิดพลาดในการปรับปรุงคุณสามารถ ตรวจสอบก่อนที่จะเผยแพร่

Node.js

function publishTemplate() {
  var config = admin.remoteConfig();
  var template = config.createTemplateFromJSON(
      fs.readFileSync('config.json', 'UTF8'));
  config.publishTemplate(template)
      .then(function (updatedTemplate) {
        console.log('Template has been published');
        console.log('ETag from server: ' + updatedTemplate.etag);
      })
      .catch(function (err) {
        console.error('Unable to publish template.');
        console.error(err);
      });
}

Java

try {
  Template publishedTemplate = FirebaseRemoteConfig.getInstance()
          .publishTemplateAsync(template).get();
  System.out.println("Template has been published");
  // See the ETag of the published template.
  System.out.println("ETag from server: " + publishedTemplate.getETag());
} catch (ExecutionException e) {
  if (e.getCause() instanceof FirebaseRemoteConfigException) {
    FirebaseRemoteConfigException rcError = (FirebaseRemoteConfigException) e.getCause();
    System.out.println("Unable to publish template.");
    System.out.println(rcError.getMessage());
  }
}

แก้ไขการกำหนดค่าระยะไกลโดยใช้ REST API

ส่วนนี้จะอธิบายความสามารถหลักของรีโมท Config REST API ที่ https://firebaseremoteconfig.googleapis.com สำหรับรายละเอียดเต็มรูปแบบให้ดูที่ การอ้างอิง API

รับโทเค็นการเข้าถึงเพื่อตรวจสอบและอนุญาตคำขอ API API

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

หากต้องการตรวจสอบสิทธิ์บัญชีบริการและอนุญาตให้เข้าถึงบริการ Firebase คุณต้องสร้างไฟล์คีย์ส่วนตัวในรูปแบบ JSON

ในการสร้างไฟล์คีย์ส่วนตัวสำหรับบัญชีบริการของคุณ:

  1. ใน Firebase คอนโซลเปิดการตั้งค่า> บริการบัญชี

  2. คลิกสร้างคีย์ส่วนตัวใหม่แล้วยืนยันโดยการคลิกที่สร้างคีย์

  3. จัดเก็บไฟล์ JSON ที่มีคีย์อย่างปลอดภัย

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

การตั้งค่าตัวแปรสภาพแวดล้อม:

ตั้งค่าตัวแปรสภาพแวดล้อม GOOGLE_APPLICATION_CREDENTIALS ไปยังเส้นทางแฟ้มของแฟ้ม JSON ที่มีคีย์บัญชีผู้ใช้บริการของคุณ ตัวแปรนี้ใช้กับเชลล์เซสชันปัจจุบันของคุณเท่านั้น ดังนั้นหากคุณเปิดเซสชันใหม่ ให้ตั้งค่าตัวแปรอีกครั้ง

Linux หรือ macOS

export GOOGLE_APPLICATION_CREDENTIALS="/home/user/Downloads/service-account-file.json"

Windows

ด้วย PowerShell:

$env:GOOGLE_APPLICATION_CREDENTIALS="C:\Users\username\Downloads\service-account-file.json"

หลังจากที่คุณทำตามขั้นตอนข้างต้นเสร็จสิ้นแล้ว Application Default Credentials (ADC) จะสามารถระบุข้อมูลรับรองของคุณโดยปริยาย ซึ่งช่วยให้คุณใช้ข้อมูลรับรองของบัญชีบริการเมื่อทำการทดสอบหรือใช้งานในสภาพแวดล้อมที่ไม่ใช่ของ Google

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

node.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);
      });
}

ในตัวอย่างนี้ ไลบรารีไคลเอ็นต์ Google API ตรวจสอบคำขอด้วยโทเค็นเว็บ JSON หรือ JWT สำหรับข้อมูลเพิ่มเติมโปรดดูที่ JSON ราชสกุลเว็บ

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();
}

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

ในการอนุญาตการเข้าถึงระยะไกล Config ขอขอบเขต https://www.googleapis.com/auth/firebase.remoteconfig

แก้ไขเทมเพลต Remote Config

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

รับเทมเพลต Remote Config ปัจจุบัน

คุณสามารถใช้แบ็กเอนด์ API เพื่อรับเวอร์ชันที่ใช้งานปัจจุบันของเทมเพลต Remote Config ในรูปแบบ JSON ใช้คำสั่งต่อไปนี้:

cURL

curl --compressed -D headers -H "Authorization: Bearer token" -X GET https://firebaseremoteconfig.googleapis.com/v1/projects/my-project-id/remoteConfig -o filename

คำสั่งนี้ส่งออกข้อมูล JSON ไปยังไฟล์เดียว และส่วนหัว (รวมถึง Etag) เป็นไฟล์แยกต่างหาก

คำขอ HTTP ดิบ

Host: firebaseremoteconfig.googleapis.com

GET /v1/projects/my-project-id/remoteConfig HTTP/1.1
Authorization: Bearer token
Accept-Encoding: gzip

เรียก API นี้จะส่งกลับ JSON ต่อไปพร้อมกับหัวข้อที่แยกต่างหากซึ่งรวมถึงการ ETag ที่คุณใช้สำหรับการร้องขอที่ตามมา

ตรวจสอบความถูกต้องของแม่แบบการกำหนดค่าระยะไกล

คุณสามารถเลือกตรวจสอบการอัปเดตของคุณก่อนเผยแพร่ได้ ตรวจสอบการอัปเดตเทมเพลตโดยผนวกกับคำขอของคุณเผยแพร่พารามิเตอร์ของ URL ?validate_only=true ในการตอบสนองรหัสสถานะ 200 และ etag ปรับปรุงด้วยคำต่อท้าย -0 หมายถึงว่าการปรับปรุงของคุณได้รับการตรวจสอบเรียบร้อยแล้ว การตอบกลับที่ไม่ใช่ 200 บ่งชี้ว่าข้อมูล JSON มีข้อผิดพลาดที่คุณต้องแก้ไขก่อนเผยแพร่

อัปเดตเทมเพลต Remote Config

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

ถ้าจำเป็นคุณสามารถใช้ REST API เพื่อ ย้อนกลับไปยังรุ่นก่อนหน้านี้ เพื่อลดความเสี่ยงของความผิดพลาดในการปรับปรุงคุณสามารถ ตรวจสอบก่อนที่จะเผยแพร่

cURL

curl --compressed -H "Content-Type: application/json; UTF8" -H "If-Match: last-returned-etag" -H "Authorization: Bearer token" -X PUT https://firebaseremoteconfig.googleapis.com/v1/projects/my-project-id/remoteConfig -d @filename

สำหรับเรื่องนี้ curl คำสั่งคุณสามารถระบุเนื้อหาโดยใช้ "@" ตัวอักษรตามด้วยชื่อไฟล์

คำขอ HTTP ดิบ

Host: firebaseremoteconfig.googleapis.com
PUT /v1/projects/my-project-id/remoteConfig HTTP/1.1
Content-Length: size
Content-Type: application/json; UTF8
Authorization: Bearer token
If-Match: expected ETag
Accept-Encoding: gzip
JSON_HERE

เพราะนี่คือการร้องขอการเขียนที่ ETag มีการแก้ไขโดยคำสั่งนี้และการปรับปรุง ETag ให้ไว้ในส่วนหัวของการตอบสนองต่อไป PUT คำสั่ง

แก้ไขเงื่อนไขการกำหนดค่าระยะไกล

คุณสามารถแก้ไขเงื่อนไขการกำหนดค่าระยะไกลและค่าตามเงื่อนไขโดยทางโปรแกรม ด้วย REST API คุณต้องแก้ไขเทมเพลตโดยตรงเพื่อแก้ไขเงื่อนไขก่อนเผยแพร่เทมเพลต

{
  "conditions": [{
    "name": "android_english",
    "expression": "device.os == 'android' && device.country in ['us', 'uk']",
    "tagColor": "BLUE"
  }, {
    "name": "tenPercent",
    "expression": "percent <= 10",
    "tagColor": "BROWN"
  }],
  "parameters": {
    "welcome_message": {
      "defaultValue": {
        "value": "Welcome to this sample app"
      },
      "conditionalValues": {
        "tenPercent": {
          "value": "Welcome to this new sample app"
        }
      },
      "description": "The sample app's welcome message"
    },
    "welcome_message_caps": {
      "defaultValue": {
        "value": "false"
      },
      "conditionalValues": {
        "android_english": {
          "value": "true"
        }
      },
      "description": "Whether the welcome message should be displayed in all capital letters."
    }
  }
}

การปรับเปลี่ยนดังกล่าวข้างต้นเป็นครั้งแรกกำหนดชุดของเงื่อนไขและจากนั้นกำหนดค่าเริ่มต้นและพารามิเตอร์ตามเงื่อนไข (ค่าเงื่อนไข) ค่าสำหรับแต่ละพารามิเตอร์ นอกจากนี้ยังเพิ่มคำอธิบายเพิ่มเติมสำหรับแต่ละองค์ประกอบ เช่นเดียวกับความคิดเห็นของโค้ด สิ่งเหล่านี้มีไว้สำหรับนักพัฒนาซอฟต์แวร์และไม่แสดงในแอป ETag ยังมีวัตถุประสงค์เพื่อให้การควบคุมเวอร์ชัน

API แบ็กเอนด์การกำหนดค่าระยะไกลมีเงื่อนไขและตัวดำเนินการเปรียบเทียบหลายอย่างที่คุณสามารถใช้เพื่อเปลี่ยนลักษณะการทำงานและลักษณะที่ปรากฏของแอปของคุณ ต้องการเรียนรู้เพิ่มเติมเกี่ยวกับเงื่อนไขและผู้ประกอบการได้รับการสนับสนุนสำหรับเงื่อนไขเหล่านี้ให้ดู อ้างอิงนิพจน์เงื่อนไข

รหัสข้อผิดพลาด HTTP

รหัสสถานะ ความหมาย
200 อัปเดตเรียบร้อยแล้ว
400 เกิดข้อผิดพลาดในการตรวจสอบความถูกต้อง ยกตัวอย่างเช่นการร้องขอที่มีมากกว่าจำนวนที่ได้รับอนุญาตของคีย์-2000 จะกลับมา 400 (Request แย่) ด้วยข้อผิดพลาดที่ Param count too large นอกจากนี้ รหัสสถานะ HTTPS นี้สามารถเกิดขึ้นได้ในสองสถานการณ์นี้:
  • เกิดข้อผิดพลาดเวอร์ชันที่ไม่ตรงกันเนื่องจากชุดของค่าและเงื่อนไขได้รับการอัปเดตตั้งแต่คุณเรียกค่า ETag ครั้งล่าสุด เพื่อแก้ปัญหานี้คุณควรใช้ GET คำสั่งที่จะได้รับแม่แบบสดและค่า ETag อัปเดตแม่แบบแล้วส่งโดยใช้แม่แบบและมูลค่า ETag สด
  • PUT คำสั่ง (ปรับปรุงระยะไกล Config คำขอ template) ถูกสร้างขึ้นมาโดยไม่ต้องระบุ If-Match ส่วนหัว
401 เกิดข้อผิดพลาดในการให้สิทธิ์ (ไม่ได้ให้โทเค็นการเข้าถึงหรือไม่ได้เพิ่ม Firebase Remote Config REST API ให้กับโปรเจ็กต์ของคุณใน Cloud Developer Console)
403 เกิดข้อผิดพลาดในการตรวจสอบสิทธิ์ (ให้โทเค็นการเข้าถึงที่ไม่ถูกต้อง)
500 เกิดข้อผิดพลาดภายใน ถ้าข้อผิดพลาดนี้เกิดขึ้น ยื่นตั๋วสนับสนุน Firebase

รหัสสถานะ 200 หมายความว่าเทมเพลตการกำหนดค่าระยะไกล (พารามิเตอร์ ค่าและเงื่อนไขสำหรับโครงการ) ได้รับการอัปเดตแล้ว และขณะนี้พร้อมใช้งานสำหรับแอปที่ใช้โปรเจ็กต์นี้ รหัสสถานะอื่นๆ ระบุว่าเทมเพลต Remote Config ที่มีอยู่ก่อนหน้านี้ยังคงมีผลอยู่

หลังจากที่คุณส่งการอัปเดตไปยังเทมเพลตของคุณ ให้ไปที่คอนโซล Firebase เพื่อตรวจสอบว่าการเปลี่ยนแปลงของคุณปรากฏตามที่คาดไว้ นี่เป็นสิ่งสำคัญเพราะการสั่งซื้อในเงื่อนไขที่ส่งผลกระทบต่อวิธีที่พวกเขาได้รับการประเมิน (เงื่อนไขแรกที่ประเมิน true จะมีผล)

การใช้งาน ETag และบังคับให้อัปเดต

Remote Config REST API ใช้แท็กเอนทิตี (ETag) เพื่อป้องกันเงื่อนไขการแข่งขันและการอัปเดตทรัพยากรที่ทับซ้อนกัน ต้องการเรียนรู้เพิ่มเติมเกี่ยวกับ ETags ดู ETag - HTTP

สำหรับส่วนที่เหลือของ API, Google ขอแนะนำให้คุณแคช ETag ให้โดยล่าสุด GET คำสั่งและการใช้งานที่คุ้มค่า ETag ใน If-Match ส่วนหัวคำขอเมื่อออก PUT คำสั่ง หากคุณ PUT ผลคำสั่งใน HTTPS รหัสสถานะ 409 คุณควรออกสด GET คำสั่งที่จะได้รับ ETag ใหม่และแม่แบบที่จะใช้กับคุณต่อไป PUT คำสั่ง

คุณสามารถหลีกเลี่ยง ETag และการป้องกันจากการที่จะให้โดยการบังคับให้ Config แม่แบบระยะไกลได้รับการปรับปรุงดังต่อไปนี้: If-Match: * อย่างไรก็ตามวิธีการนี้ไม่แนะนำเพราะมันมีความเสี่ยงที่ก่อให้เกิดการสูญเสียของการปรับปรุงระยะไกลการกำหนดค่าของคุณ เทมเพลต หากไคลเอ็นต์หลายเครื่องกำลังอัปเดตเทมเพลต Remote Config ความขัดแย้งประเภทนี้อาจเกิดขึ้นกับไคลเอนต์หลายตัวที่ใช้ API หรือกับการอัปเดตที่ขัดแย้งกันจากไคลเอนต์ API และผู้ใช้คอนโซล Firebase

สำหรับคำแนะนำเกี่ยวกับการจัดการระยะไกล Config รุ่นแม่ดู แม่แบบระยะไกลและการ Config เวอร์ชัน