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ã truy cập.

Bật API REST quản lý cho dự án Google Cloud của bạn

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

  1. Mở trang API Quản lý Firebase trong bảng điều khiển API của Google.
  2. Khi được nhắc, hãy chọn dự án Google Cloud của bạn.
  3. Nhấp vào Bật trên trang Firebase Management API.

Tạo mã 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ị của Firebase để lấy mã truy cập từ thông tin xác thực tài khoản dịch vụ của bạn:

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ó sẵn để thêm dịch vụ Firebase.

YÊU CẦU

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

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"
    }
  ]
}

Phản hồi trong ví dụ này có 2 dự án Google Cloud có thể thêm dịch vụ Firebase vào các dự án đó. Xin lưu ý rằng trường project cung cấp tên tài nguyên duy nhất trên toàn hệ thống 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 cách sử dụng tên tài nguyên projects/first-gcp-project.

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

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ề Node.js để thêm các dịch vụ Firebase vào dự án Google Cloud của bạn:

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 của thao tác đó 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 này cũng chứa các thông tin hữu ích khác về FirebaseProject mới tạo, chẳng hạn như projectNumberresources mặc định của nó. Operation sẽ tự động bị xoá sau khi hoàn tất.

Thêm ứng dụng Firebase vào dự án của bạn

Nhiều ứng dụng có thể sử dụng FirebaseProject, bao gồm cả ứng dụng iOS, Android và ứng dụng 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 các ứ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 của bạn.

Bạn có thể liên kế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 Cài đặt dự án.

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

  • Hãy chỉ định một analyticsAccountId hiện có để cung cấp một thuộc tính Google Analytics mới trong tài khoản được chỉ định và liên kết thuộc tính mới đó với dự án Firebase của bạn.

  • Hãy chỉ định một analyticsPropertyId hiện có để liên kết thuộc tính 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 hiện có nào trong tài sản Google Analytics tương ứng với mọi Ứng dụng Firebase hiện có trong FirebaseProject của bạn 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 các ứng dụng Firebase của bạn, thì các luồng dữ liệu mới sẽ được cấp phép trong tài sản Google Analytics cho từng Ứng dụng Firebase của bạn. 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.addGoogleAnalyticsOperation. 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.

Sau đâ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 đúng và loại responseanalyticsDetails, nên FirebaseProject hiện được liên kết với tài khoản Google Analytics được chỉ định. Operation sẽ tự động bị xoá sau khi hoàn tất.