Sửa đổi Cấu hình từ xa theo phương thức lập trình

Tài liệu này mô tả cách bạn có thể đọc theo phương thức lập trình và sửa đổi tập hợp các thông số và điều kiện theo định dạng JSON được gọi là Mẫu Cấu hình từ xa. Điều này cho phép thay đổi mẫu trên phần phụ trợ mà ứng dụng khách có thể tìm nạp bằng thư viện ứng dụng.

Sử dụng API REST Cấu hình từ xa hoặc SDK quản trị được mô tả trong hướng dẫn này, bạn có thể bỏ qua quản lý mẫu trong bảng điều khiển của Firebase để tích hợp trực tiếp Cấu hình từ xa thay đổi thành các quy trình của riêng bạn. Ví dụ: với API phụ trợ Cấu hình từ xa, bạn có thể:

  • Lên lịch cập nhật Cấu hình từ xa. Bằng cách sử dụng các lệnh gọi API cùng với một công việc định kỳ, bạn có thể thay đổi các giá trị Cấu hình từ xa theo lịch định kỳ.
  • Nhập hàng loạt giá trị cấu hình để chuyển đổi hiệu quả từ hệ thống độc quyền của riêng bạn sang Cấu hình từ xa Firebase.
  • Sử dụng Cấu hình từ xa với Chức năng đám mây cho Firebase, thay đổi các giá trị trong ứng dụng của bạn dựa trên các sự kiện xảy ra phía máy chủ. Ví dụ: bạn có thể sử dụng Cấu hình từ xa để quảng bá một tính năng mới trong ứng dụng của mình, sau đó tự động tắt chương trình khuyến mãi đó khi bạn phát hiện đã có đủ số người tương tác với tính năng mới.

    Sơ đồ cho thấy phần phụ trợ Cấu hình từ xa tương tác với các công cụ và máy chủ tuỳ chỉnh

Các phần sau của hướng dẫn này mô tả các thao tác bạn có thể thực hiện các API phụ trợ Cấu hình từ xa. Khi xem xét một số mã thực hiện những việc này tác vụ thông qua API REST, hãy xem một trong những ứng dụng mẫu sau:

Sửa đổi Cấu hình từ xa bằng SDK quản trị của Firebase

SDK dành cho quản trị viên là một tập hợp thư viện máy chủ cho phép bạn tương tác với Firebase từ môi trường đặc quyền. Ngoài việc cập nhật vào Cấu hình từ xa, SDK quản trị sẽ cho phép tạo và xác minh mã thông báo xác thực Firebase, đọc và ghi từ Cơ sở dữ liệu theo thời gian thực, v.v. Để tìm hiểu thêm về các điều kiện tiên quyết và cách thiết lập SDK dành cho quản trị viên, hãy xem Thêm SDK quản trị của Firebase vào máy chủ của bạn.

Trong quy trình Cấu hình từ xa thông thường, bạn có thể nhận mẫu hiện tại, sửa đổi một số thông số hoặc nhóm thông số và điều kiện, hãy xác thực mẫu, sau đó xuất bản mẫu đó. Trước khi thực hiện các lệnh gọi API đó, bạn phải uỷ quyền các yêu cầu từ SDK.

Khởi chạy SDK và uỷ quyền cho các yêu cầu API

Khi bạn khởi chạy SDK dành cho quản trị viên mà không có tham số, SDK này sẽ sử dụng Thông tin đăng nhập mặc định của ứng dụng trên Google và đọc các lựa chọn từ biến môi trường FIREBASE_CONFIG. Nếu nội dung của biến FIREBASE_CONFIG bắt đầu bằng { thì nó sẽ là được phân tích cú pháp dưới dạng đối tượng JSON. Nếu không, SDK giả định rằng chuỗi đó là tên của tệp JSON chứa các tuỳ chọn.

Ví dụ:

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

Tải mẫu Cấu hình từ xa hiện tại

Khi làm việc với các mẫu Cấu hình từ xa, xin lưu ý rằng chúng đều được tạo phiên bản và mỗi phiên bản có thời gian tồn tại giới hạn kể từ thời điểm đến thời điểm bạn thay thế bằng một bản cập nhật: 90 ngày, với tổng giới hạn trong số 300 phiên bản đã lưu trữ. Xem Mẫu và phiên bản để biết thêm thông tin.

Bạn có thể sử dụng API phụ trợ để tải phiên bản đang hoạt động hiện tại của Mẫu Cấu hình từ xa ở định dạng JSON.

Các thông số và giá trị thông số được tạo cụ thể dưới dạng biến thể trong một Thử nghiệm Thử nghiệm A/B không được đưa vào các mẫu đã xuất.

Cách tải mẫu:

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

Sửa đổi thông số Cấu hình từ xa

Bạn có thể sửa đổi cũng như thêm các thông số Cấu hình từ xa và nhóm thông số. Ví dụ: với nhóm thông số hiện có có tên là "new_menu" bạn có thể thêm một thông số để kiểm soát việc hiển thị thông tin theo mùa:

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 cho phép bạn tạo các tham số và tham số mới nhóm hoặc sửa đổi giá trị mặc định, giá trị có điều kiện và nội dung mô tả. Trong mọi trường hợp, bạn phải xuất bản mẫu một cách rõ ràng sau thực hiện sửa đổi.

Sửa đổi điều kiện Cấu hình từ xa

Bạn có thể sửa đổi cũng như thêm các điều kiện Cấu hình từ xa và các giá trị có điều kiện. Ví dụ: cách thêm một điều kiện mới:

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

Trong mọi trường hợp, bạn phải xuất bản mẫu một cách rõ ràng sau thực hiện sửa đổi.

API phụ trợ Cấu hình từ xa cung cấp một số điều kiện và thông tin so sánh mà bạn có thể sử dụng để thay đổi hành vi và giao diện của ứng dụng. Người nhận hãy tìm hiểu thêm về các điều kiện và toán tử được hỗ trợ cho các điều kiện này, hãy xem tham chiếu biểu thức có điều kiện.

Xác thực mẫu Cấu hình từ xa

Nếu muốn, bạn có thể xác thực nội dung cập nhật trước khi xuất bản, như minh hoạ dưới đây:

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

Quy trình xác thực này kiểm tra lỗi, chẳng hạn như khoá trùng lặp cho các tham số và điều kiện, tên điều kiện không hợp lệ hoặc điều kiện không tồn tại, hoặc thẻ điện tử bị định dạng sai. Ví dụ: một yêu cầu chứa nhiều hơn số lượng cho phép khoá — 2000 — sẽ trả về thông báo lỗi Param count too large.

Xuất bản mẫu Cấu hình từ xa

Sau khi tìm được mẫu và sửa đổi mẫu đó theo ý bạn bản cập nhật ứng dụng, sau đó bạn có thể xuất bản bản cập nhật đó. Xuất bản mẫu như được mô tả trong phần này thay thế toàn bộ mẫu cấu hình hiện có bằng tệp được cập nhật và mẫu hoạt động mới được gán số phiên bản một số lớn hơn mẫu mà nó thay thế.

Nếu cần, bạn có thể sử dụng API REST để khôi phục về phiên bản trước đó. Để giảm thiểu rủi ro xảy ra lỗi trong một bản cập nhật, bạn có thể xác thực trước khi xuất bản.

Hoạt động cá nhân hoá và điều kiện Cấu hình từ xa được bao gồm trong các mẫu được tải xuống, nên bạn cần lưu ý những điều sau các giới hạn khi cố gắng xuất bản lên một dự án khác:

  • Không thể nhập các hoạt động cá nhân hoá từ dự án này sang dự án khác.

    Ví dụ: nếu bạn đã bật tính năng cá nhân hoá trong dự án của mình và tải xuống và chỉnh sửa một mẫu, bạn có thể xuất bản mẫu đó lên dự án, nhưng bạn không thể xuất bản dự án đó lên một dự án khác trừ phi bạn xoá các hoạt động cá nhân hoá từ mẫu.

  • Bạn có thể nhập các điều kiện từ dự án này sang dự án khác, nhưng lưu ý rằng bất kỳ các giá trị có điều kiện cụ thể (như ID ứng dụng hoặc đối tượng) phải tồn tại trong dự án mục tiêu trước khi xuất bản.

    Ví dụ: nếu bạn có thông số Cấu hình từ xa sử dụng một điều kiện chỉ định một giá trị nền tảng là iOS, thì mẫu này có thể được xuất bản lên một dự án khác vì giá trị nền tảng là như nhau đối với mọi dự án. Tuy nhiên, nếu ứng dụng chứa điều kiện dựa vào một mã ứng dụng hoặc người dùng cụ thể đối tượng không tồn tại trong dự án mục tiêu, thì việc xác thực sẽ không thành công.

  • Nếu mẫu bạn định xuất bản có chứa các điều kiện dựa vào Google Analytics, Analytics phải được bật trong mục tiêu dự án.

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

Sửa đổi Cấu hình từ xa bằng API REST

Phần này mô tả các khả năng chính của API REST Cấu hình từ xa tại https://firebaseremoteconfig.googleapis.com. Để biết toàn bộ thông tin chi tiết, hãy xem tài liệu tham khảo API.

Nhận mã truy cập để xác thực và uỷ quyền các yêu cầu API

Các dự án Firebase hỗ trợ Google tài khoản dịch vụ, mà bạn có thể dùng để gọi Firebase từ máy chủ ứng dụng hoặc môi trường đáng tin cậy. Nếu bạn đang phát triển lập trình cục bộ hoặc triển khai ứng dụng tại chỗ, bạn có thể sử dụng thông tin đăng nhập có được thông qua tài khoản dịch vụ này để uỷ quyền cho các yêu cầu máy chủ.

Để xác thực tài khoản dịch vụ và uỷ quyền tài khoản đó để truy cập các dịch vụ của Firebase, bạn phải tạo một tệp khoá riêng tư ở định dạng JSON .

Cách tạo tệp khoá riêng tư cho tài khoản dịch vụ:

  1. Trong bảng điều khiển của Firebase, hãy mở Cài đặt > Tài khoản dịch vụ.

  2. Nhấp vào Generate New Private Key (Tạo khoá riêng tư mới), sau đó xác nhận bằng cách nhấp vào Generate key (Tạo khoá).

  3. Lưu trữ an toàn tệp JSON chứa khoá.

Khi uỷ quyền qua tài khoản dịch vụ, bạn có hai lựa chọn để cung cấp vào ứng dụng của bạn. Bạn có thể đặt GOOGLE_APPLICATION_CREDENTIALS biến môi trường, hoặc bạn có thể chuyển đường dẫn đến khoá tài khoản dịch vụ trong mã một cách rõ ràng. Lựa chọn đầu tiên an toàn hơn và được khuyên dùng.

Cách đặt biến môi trường:

Đặt biến môi trường GOOGLE_APPLICATION_CREDENTIALS vào đường dẫn tệp của tệp JSON chứa khoá tài khoản dịch vụ của bạn. Biến này chỉ áp dụng cho phiên shell hiện tại của bạn, vì vậy nếu bạn mở một phiên mới, hãy đặt lại biến.

Linux hoặc macOS

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

Windows

Với PowerShell:

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

Sau khi bạn hoàn tất các bước trên, Thông tin xác thực mặc định của ứng dụng (ADC) có thể xác định một cách ngầm ẩn các thông tin xác thực của bạn, cho phép bạn sử dụng dịch vụ thông tin đăng nhập tài khoản khi thử nghiệm hoặc chạy trong các môi trường không phải của Google.

Sử dụng thông tin đăng nhập Firebase của bạn cùng với Thư viện xác thực của Google cho ngôn ngữ bạn muốn dùng để truy xuất mã truy cập OAuth 2.0 ngắn hạn:

nút.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);
      });
}

Trong ví dụ này, thư viện ứng dụng API của Google sẽ xác thực yêu cầu bằng mã thông báo web JSON hay JWT. Để biết thêm thông tin, hãy xem Mã thông báo web 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

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

Sau khi mã truy cập của bạn hết hạn, phương thức làm mới mã thông báo sẽ được gọi để tự động truy xuất mã truy cập đã cập nhật.

Để cho phép truy cập vào Cấu hình từ xa, hãy yêu cầu phạm vi https://www.googleapis.com/auth/firebase.remoteconfig.

Sửa đổi mẫu Cấu hình từ xa

Khi làm việc với các mẫu Cấu hình từ xa, xin lưu ý rằng chúng đều được tạo phiên bản và mỗi phiên bản có thời gian tồn tại giới hạn kể từ thời điểm đến thời điểm bạn thay thế bằng một bản cập nhật: 90 ngày, với tổng giới hạn trong số 300 phiên bản đã lưu trữ. Xem Mẫu và phiên bản để biết thêm thông tin.

Tải mẫu Cấu hình từ xa hiện tại

Bạn có thể sử dụng API phụ trợ để tải phiên bản đang hoạt động hiện tại của Mẫu Cấu hình từ xa ở định dạng JSON.

Các thông số và giá trị thông số được tạo cụ thể dưới dạng biến thể trong một Thử nghiệm Thử nghiệm A/B không được đưa vào các mẫu đã xuất.

Sử dụng các lệnh sau:

cURL

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

Lệnh này xuất tải trọng JSON vào một tệp và các tiêu đề (bao gồm Etag) vào một tệp riêng.

Yêu cầu HTTP thô

Host: firebaseremoteconfig.googleapis.com

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

Lệnh gọi API này trả về JSON sau, cùng với một tiêu đề riêng biệt bao gồm một ETag mà bạn dùng cho yêu cầu tiếp theo.

Xác thực mẫu Cấu hình từ xa

Nếu muốn, bạn có thể xác thực nội dung cập nhật trước khi xuất bản. Xác thực nội dung cập nhật mẫu bằng cách thêm cho yêu cầu xuất bản tham số URL ?validate_only=true. Trong phản hồi, mã trạng thái 200 và một thẻ etag đã cập nhật có hậu tố -0 có nghĩa là bản cập nhật của bạn đã được xác thực thành công. Mọi câu trả lời không phải 200 cho biết rằng dữ liệu JSON chứa các lỗi mà bạn phải sửa trước xuất bản.

Cập nhật mẫu Cấu hình từ xa

Sau khi truy xuất mẫu và sửa đổi nội dung JSON theo ý bạn bản cập nhật ứng dụng, sau đó bạn có thể xuất bản bản cập nhật đó. Xuất bản mẫu như được mô tả trong phần này thay thế toàn bộ mẫu cấu hình hiện có bằng tệp được cập nhật và mẫu hoạt động mới được gán số phiên bản một số lớn hơn mẫu mà nó thay thế.

Nếu cần, bạn có thể sử dụng API REST để khôi phục về phiên bản trước đó. Để giảm thiểu rủi ro xảy ra lỗi trong một bản cập nhật, bạn có thể xác thực trước khi xuất bản.

Hoạt động cá nhân hoá và điều kiện Cấu hình từ xa được bao gồm trong các mẫu được tải xuống, nên bạn cần lưu ý những điều sau các giới hạn khi cố gắng xuất bản lên một dự án khác:

  • Không thể nhập các hoạt động cá nhân hoá từ dự án này sang dự án khác.

    Ví dụ: nếu bạn đã bật tính năng cá nhân hoá trong dự án của mình và tải xuống và chỉnh sửa một mẫu, bạn có thể xuất bản mẫu đó lên dự án, nhưng bạn không thể xuất bản dự án đó lên một dự án khác trừ phi bạn xoá các hoạt động cá nhân hoá từ mẫu.

  • Bạn có thể nhập các điều kiện từ dự án này sang dự án khác, nhưng lưu ý rằng bất kỳ các giá trị có điều kiện cụ thể (như ID ứng dụng hoặc đối tượng) phải tồn tại trong dự án mục tiêu trước khi xuất bản.

    Ví dụ: nếu bạn có thông số Cấu hình từ xa sử dụng một điều kiện chỉ định một giá trị nền tảng là iOS, thì mẫu này có thể được xuất bản lên một dự án khác vì giá trị nền tảng là như nhau đối với mọi dự án. Tuy nhiên, nếu ứng dụng chứa điều kiện dựa vào một mã ứng dụng hoặc người dùng cụ thể đối tượng không tồn tại trong dự án mục tiêu, thì việc xác thực sẽ không thành công.

  • Nếu mẫu bạn định xuất bản có chứa các điều kiện dựa vào Google Analytics, Analytics phải được bật trong mục tiêu dự án.

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

Đối với lệnh curl này, bạn có thể chỉ định nội dung bằng cách sử dụng "@" nhân vật, theo sau là tên tệp.

Yêu cầu HTTP thô

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

Vì đây là yêu cầu ghi nên ETag được sửa đổi bởi lệnh này và một ETag cập nhật được cung cấp trong các tiêu đề phản hồi của lệnh PUT tiếp theo.

Sửa đổi điều kiện Cấu hình từ xa

Bạn có thể lập trình để sửa đổi các điều kiện và điều kiện của Cấu hình từ xa giá trị. Với API REST, bạn phải trực tiếp chỉnh sửa mẫu để sửa đổi trước khi xuất bản mẫu.

{
  "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."
    }
  }
}

Các sửa đổi ở trên xác định một tập hợp các điều kiện, sau đó xác định giá trị mặc định và tham số dựa trên điều kiện (giá trị có điều kiện) cho mỗi thông số. Nó cũng thêm mô tả tuỳ chọn cho mỗi phần tử; chẳng hạn như nhận xét mã, những nhận xét này dành cho nhà phát triển sử dụng và không được hiển thị trong ứng dụng. ETag là cũng được cung cấp cho mục đích quản lý phiên bản.

API phụ trợ Cấu hình từ xa cung cấp một số điều kiện và thông tin so sánh mà bạn có thể sử dụng để thay đổi hành vi và giao diện của ứng dụng. Người nhận hãy tìm hiểu thêm về các điều kiện và toán tử được hỗ trợ cho các điều kiện này, hãy xem tham chiếu biểu thức có điều kiện.

Mã lỗi HTTP

Mã trạng thái Ý nghĩa
200 Đã cập nhật thành công
400 Đã xảy ra lỗi xác thực. Ví dụ: yêu cầu chứa nhiều hơn số lượng khoá được phép—2000—sẽ trả về 400 (Yêu cầu không hợp lệ) với thông báo lỗi Param count too large. Ngoài ra, Mã trạng thái HTTPS này có thể xảy ra trong hai trường hợp sau:
  • Đã xảy ra lỗi phiên bản không khớp vì tập hợp các giá trị và điều kiện đã được cập nhật kể từ lần gần nhất bạn truy xuất giá trị ETag. Để giải quyết vấn đề này, bạn nên sử dụng lệnh GET để lấy mẫu và giá trị ETag mới, cập nhật mẫu rồi gửi bằng mẫu đó cùng với giá trị ETag mới.
  • Lệnh PUT (yêu cầu mẫu Cập nhật Cấu hình từ xa) đã được thực hiện mà không chỉ định tiêu đề If-Match.
401 Đã xảy ra lỗi uỷ quyền (không cung cấp mã truy cập hoặc API REST Cấu hình từ xa Firebase chưa được thêm vào dự án của bạn trong Bảng điều khiển dành cho nhà phát triển trên đám mây)
403 Đã xảy ra lỗi xác thực (mã truy cập đã cung cấp không chính xác)
500 Đã xảy ra lỗi nội bộ. Nếu lỗi này xảy ra, gửi phiếu yêu cầu hỗ trợ của Firebase

Mã trạng thái 200 có nghĩa là mẫu Cấu hình từ xa (thông số, giá trị và điều kiện cho dự án) đã được cập nhật và hiện có sẵn cho các ứng dụng sử dụng dự án này. Các mã trạng thái khác cho biết Cấu hình từ xa mẫu đã tồn tại trước đó vẫn có hiệu lực.

Sau khi bạn gửi nội dung cập nhật cho mẫu, hãy chuyển đến bảng điều khiển của Firebase để xác minh rằng các thay đổi của bạn xuất hiện như mong đợi. Điều này rất quan trọng vì thứ tự các điều kiện sẽ ảnh hưởng đến cách đánh giá chúng (điều kiện đầu tiên mà đánh giá true có hiệu lực).

Mức sử dụng ETag và bản cập nhật bắt buộc

API REST Cấu hình từ xa sử dụng một thẻ thực thể (ETag) để ngăn chặn các tình huống tương tranh và chồng chéo cập nhật vào tài nguyên. Để tìm hiểu thêm về ETag, hãy xem ETag – HTTP.

Đối với API REST, bạn nên lưu vào bộ nhớ đệm ETag do lệnh GET gần đây nhất cung cấp và sử dụng giá trị ETag đó trong tiêu đề của yêu cầu If-Match khi đưa ra lệnh PUT. Nếu PUT của bạn dẫn đến Mã trạng thái HTTPS 409, bạn nên phát hành một GET mới để có được một ETag và mẫu mới để sử dụng với lệnh PUT tiếp theo.

Bạn có thể tránh né ETag và khả năng bảo vệ mà ETag mang lại, bằng cách buộc cập nhật mẫu Cấu hình từ xa như sau: If-Match: * Tuy nhiên, phương pháp này không được khuyến nghị vì có nguy cơ làm mất các cập nhật cho mẫu Cấu hình từ xa của bạn nếu nhiều ứng dụng khách đang cập nhật Mẫu Cấu hình từ xa. Loại xung đột này có thể xảy ra với nhiều ứng dụng khách sử dụng API hoặc với nội dung cập nhật xung đột từ các ứng dụng API và người dùng bảng điều khiển của Firebase.

Để biết hướng dẫn về cách quản lý các phiên bản mẫu Cấu hình từ xa, hãy xem Tạo phiên bản và mẫu Cấu hình từ xa.