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

API REST Management Firebase cho phép thiết lập có lập trình và quản lý các dự án Firebase, bao gồm Tài nguyên Firebase và Ứng dụng Firebase.

Phần tổng quan này mô tả quy trình chung để thêm tài nguyên và ứng dụng lên một Google Cloud hiện có dự án hiện không sử dụng các dịch vụ 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 đảm bảo rằng bạn bật API.

Để biết thông tin về việc quản lý quyền truy cập vào Firebase Management API, hãy truy cập vào API Quản lý quyền truy cập danh tính (IAM) của Cloud .

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 Cloud của bạn và tạo mã 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 trên Google Cloud.

  1. Mở 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 của bạn trên Google Cloud.
  3. Nhấp vào Bật trên trang API Quản lý Firebase.

Tạo mã truy cập API

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

Trước tiên, nếu bạn không sử dụng môi trường Google Cloud, hãy đặt GOOGLE_APPLICATION_CREDENTIALS biến môi trường đến đường dẫn đến mã 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 để nhận mã truy cập từ dịch vụ của bạn thông tin đăng nhập tài khoả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 những dự án trên Google Cloud có thể thêm Firebase luôn miễn phí.

YÊU CẦU

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

Sau đây là ví dụ về cách Node.js yêu cầu danh sách Google Cloud có sẵn dự á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 của lệnh gọi đến availableProjects.list chứa danh sách ProjectInfo . Nếu danh sách dự án quá dài, thì nội dung phản hồi cũng chứa nextPageToken mà bạn có thể sử dụng làm tham số truy vấn để tải trang tiếp theo dự án.

Dưới đây là nội dung phản hồi mẫu của một 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 ví dụ này có hai dự án Google Cloud có thể có Firebase các dịch vụ được thêm vào quảng cáo. Xin lưu ý rằng trường project cung cấp tập lệnh toàn cục tên tài nguyên duy nhất 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 các dịch vụ Firebase hoặc thêm ứng dụng vào dự án của bạn.

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 dịch vụ Firebase vào dự án

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

YÊU CẦU

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

Sau đây là ví dụ về Node.js để thêm các dịch vụ của Firebase vào Google Cloud dự á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 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 cho đến khi giá trị của donetrueresponse là nhập 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.

Sau đâ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 phương thức Dự án Google Cloud hiện đã 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 của bạn

Nhiều ứng dụng có thể sử dụng FirebaseProject, bao gồm cả iOS, Android và web của chúng tôi. Trong phần này, bạn sẽ tìm hiểu cách thêm Ứng dụng Firebase vào danh sách FirebaseProject theo phương thức lập trình. Lưu ý rằng bạn cũng có thể thêm Ứng dụng Firebase vào dự án Firebase hiện tại của bạn trong bảng điều khiển của 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 một tài khoản Google Analytics với tài khoản hiện có FirebaseProject theo phương thức lập trình. Xin lưu ý rằng bạn cũng có thể liên kết từ dự án Firebase sang Google Analytics trong Các công cụ tích hợp trong phần Cài đặt dự án.

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

  • Chỉ định một analyticsAccountId hiện có để cung cấp một 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.

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

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

Khi bạn gọi projects.addGoogleAnalytics:

  1. Bước kiểm tra đầu tiên xác định liệu có luồng dữ liệu hiện có nào trong kho lưu trữ Google tài sản Analytics tương ứng với mọi Ứng dụng Firebase hiện có trong FirebaseProject (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ì dữ liệu mới chúng tôi cung cấp trong thuộc tính Google Analytics cho mỗi luồng Ứng dụng Firebase. Xin lưu ý rằng luồng dữ liệu mới luôn được cấp phép cho web Ứng dụng ngay cả khi ứng dụng đó từ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ệ phân cấp và cấu trúc của tài khoản Google Analytics trong Tài liệu phân tích.

YÊU CẦU

Gọi điện projects.addGoogleAnalytics.

Trong 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 của chúng tôi. Cuộc gọi này sẽ cung 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>"
}

Sau đây là ví dụ về cách Node.js có thể dùng để liên kết một dự án Firebase với một Google Analytics tài khoản:

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 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 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 của thao tác 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 phương thức FirebaseProject hiện được liên kết với tài khoản Google Analytics được chỉ định. Chiến lược phát hành đĩa đơn Operation sẽ tự động bị xoá sau khi hoàn tất.

Hoàn tất vị trí mặc định của dự án (Không bắt buộc)

Trường hợp dự án Firebase của bạn sử dụng Cloud Firestore, Cloud Storage, hoặc ứng dụng App Engine, bạn có thể hoàn thiện phiên bản Google Cloud mặc định Vị trí tài nguyên của Nền tảng (GCP) cho dự án của mình theo phương thức lập trình. Xin lưu ý rằng bạn cũng có thể chọn một vị trí trong thời gian Bảng điều khiển của Firebase.

Trước khi đặt vị trí này, hãy xem phần Chọn vị trí cho dự án để biết thông tin về vị trí phù hợp nhất cho dự án của bạn. Bạn cũng nên gọi projects.availableLocations để trả về danh sách các vị trí hợp lệ cho dự án của bạn vì nếu dự án của bạn thuộc một tổ chức trên Google Cloud, thì chính sách tổ chức của bạn có thể hạn chế các vị trí đều hợp lệ cho dự án của bạn.

Việc gọi phương thức defaultLocation.finalize này sẽ tạo ra một App Engine có Cloud Storage mặc định bộ chứa nằm trong locationId mà bạn cung cấp trong nội dung yêu cầu.

Vị trí tài nguyên GCP mặc định có thể đã được chỉ định nếu Project đã có một ứng dụng App Engine hoặc ứng dụng này Phương thức defaultLocation.finalize đã được gọi trước đó.

YÊU CẦU

Gọi điện projects.defaultLocation.finalize. Dưới đây là cách tạo nội dung yêu cầu:

  • Bắt buộc:

    • locationId: Vị trí lưu trữ dữ liệu của bạn cho các dịch vụ GCP yêu cầu chế độ cài đặt vị trí, chẳng hạn như Cloud Firestore hoặc Cloud Storage.
{
  "locationId": "us-west2"
}

Dưới đây là ví dụ để Node.js hoàn tất vị trí mặc định của dự án:

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

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

  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.defaultLocation.finalize là một Operation. Trước khi 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 cho đến khi giá trị của donetrueresponse của nó thuộc loại google.protobuf.Empty. Nếu thao tác không thành công, nội dung phản hồi error sẽ thuộc loại google.rpc.Status. Operation sẽ tự động bị xoá sau khi hoàn tất.