Google cam kết thúc đẩy công bằng chủng tộc cho Cộng đồng người da đen. Xem cách thực hiện.
Trang này được dịch bởi Cloud Translation API.
Switch to English

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

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

Tổng quan này mô tả quy trình làm việc chung để thêm tài nguyên và ứng dụng Firebase vào dự án Google Cloud Platform (GCP) hiện có hiện không sử dụng dịch vụ Firebase.

Bạn có thể chuyển đến các phần cụ thể của trang này nếu bạn 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ề quản lý quyền truy cập cho API quản lý Firebase, hãy truy cập tài liệu API quản lý quyền truy cập nhận dạng đá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 GCP của mình và tạo mã thông báo truy cập .

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

Nếu chưa có, bạn sẽ cần bật API quản lý Firebase để sử dụng với dự án GCP của mình.

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

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

Đây là một ví dụ cho Node.js lấy mã thông báo 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 khóa tài khoản dịch vụ của bạn.

Linux hoặc macOS

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

các cửa sổ

Với PowerShell:

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

Sau đó, sử dụng SDK quản trị Firebase để nhận mã thông báo truy cập từ thông tin đăng nhập 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 của bạn

Bạn có thể tìm thấy các dự án GCP có sẵn để thêm dịch vụ Firebase.

YÊU CẦU

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

Dưới đây là một ví dụ để Node.js yêu cầu danh sách các dự án GCP 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Ả

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

Dưới đây là một cơ quan phản hồi ví dụ của một cuộc gọi availableProjects.list cóProjects.list:

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

Phản hồi ví dụ này có hai dự án GCP có thể được thêm dịch vụ Firebase vào chúng. 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ỳ project giá trị được liệt kê trong phản hồi từ availableProjects.list để thêm các dịch vụ căn cứ hỏa lực hoặc thêm các ứng dụng để dự án của bạn.

Trong phần tiếp theo, chúng tôi sẽ thêm các dịch vụ Firebase vào First GCP 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 của bạn

Các dự án Google Cloud Platform (GCP) 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 dịch vụ Firebase vào dự án GCP hiện tại của mình theo chương trình. Lưu ý rằng bạn cũng có thể thêm các dịch vụ Firebase vào dự án GCP hiện có của mình trong bảng điều khiển Firebase .

YÊU CẦU

Gọi projects.addFirebase . Nội dung yêu cầu cho cuộc 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 GCP 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 một lệnh gọi tới projects.addFirebase là một Operation . Trước khi bạn có thể gọi các điểm cuối khác có liên quan đến Firebase cho dự án của mình, hoạt động 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 lệnh operations.get vào thao tác cho đến khi giá trị của donetrueresponse của nó thuộc loại FirebaseProject . Nếu hoạt động không thành công, error của nó được đặt thành google.rpc.Status .

Đây là phản ứng cơ thể của một operations.get gọi:

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

donetrue và loại responseFirebaseProject nên dự án GCP 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 được tạo của bạn, như projectNumber và các resources mặc định của nó. Operation sẽ tự động bị xóa sau khi hoàn thành.

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

Nhiều ứng dụng khác nhau có thể sử dụng FirebaseProject , bao gồm cá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ó của mình theo chương 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 có của mình 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 tại với FirebaseProject hiện có của mình theo chương trình. Lưu ý rằng bạn cũng có thể liên kết dự án Firebase hiện tại của mình với Google Analytics trong tab Tích hợp của Cài đặt dự án .

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

  • 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.

  • Chỉ định một analyticsPropertyId hiện có để liên kết thuộc tính 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à bất kỳ analyticsPropertyId nào hiện có trên trang web Google Analytics .

Khi bạn gọi tới projects.addGoogleAnalytics :

  1. Lần kiểm tra đầu tiên sẽ xác định xem có bất kỳ luồng dữ liệu hiện có nào trong thuộc tính Google Analytics tương ứng với bất kỳ Ứng dụng Firebase hiện có nào trong FirebaseProject của bạn hay không (dựa trên tên packageName hoặc bundleId liên kết với luồng dữ liệu). Sau đó, nếu có thể, các luồng dữ liệu và ứng dụng được liên kết với nhau. Lưu ý rằng liên kết tự động 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 nào cho Ứng dụng Firebase của bạn, các luồng dữ liệu mới sẽ được cung cấp trong thuộc tính Google Analytics cho từng Ứng dụng Firebase của bạn. Lưu ý rằng luồng dữ liệu mới luôn được cấp phép cho Ứng dụng web ngay cả khi trước đó nó đã được liên kết với luồng dữ liệu trong thuộc tính Analytics của bạn.

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

YÊU CẦU

Gọi projects.addGoogleAnalytics .

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

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

Dưới đây là ví dụ về 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 một cuộc gọi tới projects.addGoogleAnalytics là một Operation . Trước khi bạn có thể gọi các điểm cuối khác có liên quan đến Firebase cho dự án của mình, hoạt động 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 lệnh operations.get vào thao tác cho đến khi giá trị của donetrueresponse thuộc loại analyticsDetails . Nếu hoạt động không thành công, error của nó được đặt thành google.rpc.Status .

Đây là phản ứng cơ thể của một operations.get gọi:

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

Vì việc done là đú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ị xóa sau khi hoàn thành.

Hoàn thiện vị trí mặc định của dự án của bạn (Tùy chọn)

Nếu dự án Firebase của bạn sẽ sử dụng Cloud Firestore, Cloud Storage hoặc ứng dụng Google App Engine (GAE), thì bạn có thể hoàn thiện vị trí tài nguyên Google Cloud Platform (GCP) mặc định cho dự án của mình theo chương trình. Lưu ý rằng bạn cũng có thể chọn một vị trí trong bảng điều khiển Firebase .

Trước khi đặt vị trí này, hãy kiểm tra Chọn vị trí cho dự án của bạn để biết thông tin về vị trí nào là tốt nhất cho dự án của bạn. Bạn cũng nên gọi tới projects.availableLocations để trả về danh sách các vị trí hợp lệ cho dự án của mình vì nếu dự án của bạn là một phần của tổ chức Google Cloud, thì các chính sách tổ chức của bạn có thể hạn chế vị trí nào 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 ứng dụng App Engine có bộ chứa Cloud Storage mặc định nằm trong locationId mà bạn cung cấp trong phần thân yêu cầu.

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

YÊU CẦU

Gọi projects.defaultLocation.finalize . Dưới đây là cách tạo phần thân yêu cầu của bạn:

  • Cần thiết:

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

Đây là một ví dụ cho Node.js để hoàn thiện vị trí mặc định của dự án của bạ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 một lệnh gọi tới projects.defaultLocation.finalize là một Operation . Trước khi bạn có thể gọi các điểm cuối khác có liên quan đến Firebase cho dự án của mình, hoạt động 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 lệnh operations.get vào thao tác 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, error nội dung phản hồi sẽ thuộc loại google.rpc.Status . Operation sẽ tự động bị xóa sau khi hoàn thành.