Thiết lập và quản lý dự án Firebase bằng API REST quản lý

API REST Quản lý Firebase cho phép thiết lập và quản lý các dự án Firebase theo phương thức lập trình, bao gồm cả tài nguyên Firebase và Ứng dụng Firebase của dự án.

Thông tin tổng quan này mô tả quy trình công việc chung để thêm tài nguyên và ứng dụng Firebase vào một dự án Google Cloud hiện có chưa sử dụng các dịch vụ của Firebase.

Bạn có thể chuyển đến các phần cụ thể trên trang này nếu chỉ muốn:

Trước khi làm theo bất kỳ bước nào trên trang này, hãy nhớ bật API.

Để biết thông tin về cách quản lý quyền truy cập cho API Quản lý Firebase, hãy truy cập vào tài liệu về API Quản lý quyền truy cập danh tính trên đám mây (IAM).

Trước khi bắt đầu

Trước khi bắt đầu, bạn cần bật API Quản lý cho dự án Google Cloudtạo mã thông báo truy cập.

Bật API REST quản lý cho dự án Google Cloud

Nếu chưa bật, bạn cần bật API Quản lý Firebase để sử dụng với dự án Google Cloud.

  1. Mở trang Firebase Management API (API quản lý Firebase) trong Google API Console.
  2. Khi được nhắc, hãy chọn dự án Google Cloud.
  3. Nhấp vào Bật trên trang Firebase Management API.

Tạo mã thông báo truy cập API

Dưới đây là ví dụ về cách Node.js truy xuất mã truy cập của bạn.

Trước tiên, nếu bạn không ở trong môi trường Google Cloud, hãy đặt biến môi trường GOOGLE_APPLICATION_CREDENTIALS thành đường dẫn đến khoá tài khoản dịch vụ.

Linux hoặc macOS

export GOOGLE_APPLICATION_CREDENTIALS="/path/to/your/service-account-file.json"

Windows

Với PowerShell:

$env:GOOGLE_APPLICATION_CREDENTIALS="C:\path\to\your\service-account-file.json"

Sau đó, hãy sử dụng SDK Quản trị Firebase để lấy mã thông báo truy cập từ thông tin xác thực tài khoản dịch vụ:

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

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

Tìm tên tài nguyên của dự án

Bạn có thể tìm thấy các dự án Google Cloud có thể thêm các dịch vụ Firebase.

YÊU CẦU

Gọi availableProjects.list. Nội dung yêu cầu cho lệnh gọi này phải trống.

Dưới đây là ví dụ về cách Node.js yêu cầu danh sách các dự án Google Cloud có sẵn:

const fetch = require('node-fetch');

async function listProjects() {
  const accessToken = getAccessToken();
  const uri = 'https://firebase.googleapis.com/v1beta1/availableProjects';
  const options = {
    method: 'GET',
    headers: {
      'Authorization': 'Bearer ' + accessToken,
    },
  };

  try {
    const rawResponse = await fetch(uri, options);
    const resp = await rawResponse.json();
    const projects = resp['projectInfo'];
    console.log('Project total: ' + projects.length);
    console.log('');
    for (let i in projects) {
      const project = projects[i];
      console.log('Project ' + i);
      console.log('ID: ' + project['project']);
      console.log('Display Name: ' + project['displayName']);
      console.log('');
    }
  } catch(err) {
    console.error(err);
  }
}

KẾT QUẢ

Nội dung phản hồi từ lệnh gọi đến availableProjects.list chứa danh sách các đối tượng ProjectInfo. Nếu danh sách dự án quá dài, nội dung phản hồi cũng chứa một nextPageToken mà bạn có thể dùng làm tham số truy vấn để nhận trang tiếp theo của dự án.

Dưới đây là ví dụ về nội dung phản hồi của lệnh gọi availableProjects.list:

{
  "projectInfo": [
    {
      "project": "projects/first-cloud-project",
      "displayName": "First Cloud Project"
    },
    {
      "project": "projects/second-cloud-project",
      "displayName": "Second Cloud Project"
    }
  ]
}

Nội dung phản hồi mẫu này có hai dự án Google Cloud có thể thêm các dịch vụ Firebase vào. Xin lưu ý rằng trường project cung cấp tên tài nguyên duy nhất trên toàn cầu cho một dự án.

Bạn có thể sử dụng bất kỳ giá trị project nào được liệt kê trong phản hồi từ availableProjects.list để thêm dịch vụ Firebase hoặc thêm ứng dụng vào dự án của mình.

Trong phần tiếp theo, chúng ta sẽ thêm các dịch vụ Firebase vào First Cloud Project bằng tên tài nguyên projects/first-gcp-project.

Thêm các dịch vụ Firebase vào dự án

Các dự án Google Cloud có thể tận dụng các dịch vụ do Firebase cung cấp. Trong phần này, bạn sẽ tìm hiểu cách thêm các dịch vụ Firebase vào dự án Google Cloud hiện có theo phương thức lập trình. Xin lưu ý rằng bạn cũng có thể thêm các dịch vụ Firebase vào dự án Google Cloud hiện có trong bảng điều khiển Firebase.

YÊU CẦU

Gọi projects.addFirebase. Nội dung yêu cầu cho lệnh gọi này phải trống.

Dưới đây là ví dụ về cách Node.js thêm các dịch vụ Firebase vào dự án Google Cloud:

const fetch = require('node-fetch');

async function addFirebase(projectId) {
  const accessToken = getAccessToken();
  const uri = 'https://firebase.googleapis.com/v1beta1/projects/' + projectId + ':addFirebase';
  const options = {
    method: 'POST',
    // Use a manual access token here since explicit user access token is required.
    headers: {
      'Authorization': 'Bearer ' + accessToken,
    },
  };

  try {
    const rawResponse = await fetch(uri, options);
    const resp = await rawResponse.json();
    console.log(resp);
  } catch(err) {
    console.error(err['message']);
  }
}

KẾT QUẢ

Kết quả của lệnh gọi đến projects.addFirebase là một Operation. Trước khi bạn có thể gọi các điểm cuối khác liên quan đến Firebase cho dự án của mình, thao tác này phải thành công.

Để kiểm tra xem thao tác có thành công hay không, bạn có thể gọi operations.get trên thao tác cho đến khi giá trị của donetrueresponse của thao tác đó thuộc loại FirebaseProject. Nếu thao tác không thành công, error sẽ được đặt thành google.rpc.Status.

Dưới đây là nội dung phản hồi của lệnh gọi operations.get:

{
  "name": "operations/...",
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.firebase.service.v1beta1.FirebaseProject",
    "projectId": "first-cloud-project",
    "projectNumber": "...",
    "displayName": "First Cloud Project",
    "name": "projects/first-cloud-project",
    "resources": {
      "hostingSite": "first-cloud-project",
      "realtimeDatabaseInstance": "first-cloud-project"
    }
  }
}

donetrue và loại responseFirebaseProject, nên dự án Google Cloud hiện có các dịch vụ Firebase. Phản hồi cũng chứa thông tin hữu ích khác về FirebaseProject mới tạo, chẳng hạn như projectNumberresources mặc định. Operation sẽ tự động bị xoá sau khi hoàn tất.

Thêm Ứng dụng Firebase vào dự án

Nhiều ứng dụng có thể sử dụng FirebaseProject, bao gồm cả ứng dụng iOS, Android và web. Trong phần này, bạn sẽ tìm hiểu cách thêm Ứng dụng Firebase vào FirebaseProject hiện có bằng cách lập trình. Xin lưu ý rằng bạn cũng có thể thêm Ứng dụng Firebase vào dự án Firebase hiện có trong bảng điều khiển Firebase.

Chọn một loại Ứng dụng Firebase để thêm vào dự án Firebase.

Bạn có thể liên kết một tài khoản Google Analytics hiện có với FirebaseProject hiện có theo phương thức lập trình. Xin lưu ý rằng bạn cũng có thể liên kết dự án Firebase hiện có với Google Analytics trong thẻ Tích hợp của phần Cài đặt dự án.

Lệnh gọi đến projects.addGoogleAnalytics yêu cầu một analytics_resource, có thể là analyticsAccountId hoặc analyticsPropertyId:

  • Chỉ định một analyticsAccountId hiện có để cấp phép một tài sản Google Analytics mới trong tài khoản đã chỉ định và liên kết tài sản mới với dự án Firebase của bạn.

  • Chỉ định một analyticsPropertyId hiện có để liên kết tài sản Google Analytics với dự án Firebase.

Bạn có thể tìm thấy cả analyticsAccountId và mọi analyticsPropertyId hiện có trên trang web của Google Analytics.

Khi bạn gọi projects.addGoogleAnalytics:

  1. Bước kiểm tra đầu tiên xác định xem có luồng dữ liệu nào hiện có trong tài sản Google Analytics tương ứng với Ứng dụng Firebase hiện có nào trong FirebaseProject hay không (dựa trên packageName hoặc bundleId được liên kết với luồng dữ liệu). Sau đó, các luồng dữ liệu và ứng dụng sẽ được liên kết (nếu có). Xin lưu ý rằng tính năng tự động liên kết này chỉ áp dụng cho Ứng dụng Android và Ứng dụng iOS.

  2. Nếu không tìm thấy luồng dữ liệu tương ứng cho Ứng dụng Firebase, thì hệ thống sẽ cấp luồng dữ liệu mới trong tài sản Google Analytics cho từng Ứng dụng Firebase. Xin lưu ý rằng luồng dữ liệu mới luôn được cấp cho Ứng dụng web ngay cả khi trước đó ứng dụng đó được liên kết với một luồng dữ liệu trong tài sản Analytics.

Tìm hiểu thêm về hệ thống phân cấp và cấu trúc của tài khoản Google Analytics trong tài liệu về Analytics.

YÊU CẦU

Gọi projects.addGoogleAnalytics.

Trong phần nội dung yêu cầu của lệnh gọi mẫu đến project.addGoogleAnalytics, chúng ta sẽ chỉ định tài khoản Google Analytics analyticsAccountId. Lệnh gọi này sẽ cấp một tài sản Google Analytics mới và liên kết tài sản mới với FirebaseProject.

{
  "analyticsAccountId": "<your-google-analytics-account-id>"
}

Dưới đây là ví dụ về cách Node.js liên kết dự án Firebase với tài khoản Google Analytics:

const fetch = require('node-fetch');

async function addGoogleAnalytics(projectId, analyticsAccountId) {
  const accessToken = getAccessToken();
  const uri = 'https://firebase.googleapis.com/v1beta1/projects/' + projectId + ':addGoogleAnalytics';
  const options = {
    method: 'POST',
    headers: {
      'Authorization': 'Bearer ' + accessToken,
    },
    body: JSON.stringify({
      'analyticsAccountId': analyticsAccountId
    }),
  };

  try {
    const rawResponse = await fetch(uri, options);
    const resp = await rawResponse.json();
    console.log(resp);
  } catch(err) {
    console.error(err['message']);
  }
}

KẾT QUẢ

Kết quả của lệnh gọi đến projects.addGoogleAnalytics là một Operation. Trước khi bạn có thể gọi các điểm cuối khác liên quan đến Firebase cho dự án của mình, thao tác này phải thành công.

Để kiểm tra xem thao tác có thành công hay không, bạn có thể gọi operations.get trên thao tác cho đến khi giá trị của donetrueresponse thuộc loại analyticsDetails. Nếu thao tác không thành công, error sẽ được đặt thành google.rpc.Status.

Dưới đây là nội dung phản hồi của lệnh gọi operations.get:

{
  "name": "operations/...",
  "none": true,
  "response": {
    "@type": "type.googleapis.com/google.firebase.service.v1beta1.AnalyticsDetails",
    "analyticsProperty": [
      {
        "id": "...",
        "displayName": "..."
      }
    ],
    "streamMappings": [
      {
        "app": "...",
        "streamId": "...",
        "measurementId": "..."
      }
    ]
  }
}

done là true và loại responseanalyticsDetails, nên FirebaseProject hiện được liên kết với tài khoản Google Analytics đã chỉ định. Operation sẽ tự động bị xoá sau khi hoàn tất.