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

Các căn cứ hỏa lực quản lý REST API cho phép thiết lập chương trình và quản lý dự án căn cứ hỏa lực, kể cả nguồn lực căn cứ hỏa lực của dự án và căn cứ hỏa lực Apps.

Tổng quan này mô tả các quy trình làm việc chung để thêm nguồn lực căn cứ hỏa lực và các ứng dụng đến một hiện dự án Google Cloud mà không hiện đang sử dụng các dịch vụ căn cứ hỏa lực.

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 các bước trên trang này, hãy chắc chắn rằng bạn cho phép các API .

Để biết thông tin về quản lý truy cập cho Management API căn cứ hỏa lực, truy cập vào tài liệu API Mây nhận dạng Quản lý truy cập (IAM) .

Trước khi bắt đầu

Trước khi bắt đầu, bạn sẽ cần phải kích hoạt các API quản lý cho dự án Google Cloud của bạn và tạo ra truy cập của bạn thẻ .

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

Nếu bạn chưa sẵn sàng, bạn sẽ cần phải kích hoạt các API quản lý căn cứ hỏa lực để sử dụng với dự án Google Cloud Print của bạn.

  1. Mở quản lý căn cứ hỏa lực API trang trong Google API giao diện điều khiển.
  2. Khi được nhắc, hãy chọn dự án Google Cloud của bạn.
  3. Bấm Enable trên trang Quản lý căn cứ hỏa lực API.

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.

Thứ nhất, nếu bạn đang không ở trong một môi trường đám mây của Google, thiết lập GOOGLE_APPLICATION_CREDENTIALS biến môi trường để đường dẫn đến chìa 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ã 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 Google Cloud có sẵn để thêm dịch vụ Firebase.

LỜI 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 Google Cloud hiện có:

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, cơ thể phản ứng cũng chứa một nextPageToken mà bạn có thể sử dụng như một tham số truy vấn để có được những trang tiếp theo của dự án.

Dưới đây là một cơ thể ví dụ phản ứng của một availableProjects.list gọi:

{
  "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 thêm dịch vụ Firebase vào chúng. Lưu ý rằng các project lĩnh vực cung cấp tên tài nguyên toàn cầu duy nhất 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ụ căn cứ hỏa lực để First Cloud Project sử dụng các projects/first-gcp-project tên tài nguyên.

Thêm các dịch vụ Firebase vào dự án của bạ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 dịch vụ Firebase vào dự án Google Cloud hiện có 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ụ căn cứ hỏa lực cho dự án Google Cloud hiện tại của bạn trong căn cứ hỏa lực console .

LỜI 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à một ví dụ cho 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 một cuộc 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, hoạt động phải thành công.

Để kiểm tra xem các hoạt động thành công, bạn có thể gọi operations.get về hoạt động cho đến khi giá trị của donetrue và nó response là loại FirebaseProject . Nếu hoạt động không thành, nó error được thiết lập để 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-cloud-project",
    "projectNumber": "...",
    "displayName": "First Cloud Project",
    "name": "projects/first-cloud-project",
    "resources": {
      "hostingSite": "first-cloud-project",
      "realtimeDatabaseInstance": "first-cloud-project"
    }
  }
}

Kể từ khi donetrueresponse loại là một FirebaseProject , dự án Google Cloud bây giờ có dịch vụ căn cứ hỏa lực. Câu trả lời cũng chứa thông tin hữu ích khác về vừa tạo FirebaseProject , giống như nó projectNumber và mặc định của nó resources . Các Operation được tự động 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 một FirebaseProject , bao gồm iOS, Android, và các ứng dụng web. Trong phần này, bạn sẽ học cách để thêm căn cứ hỏa lực Apps để hiện tại của bạn FirebaseProject lập trình. Lưu ý rằng bạn cũng có thể thêm căn cứ hỏa lực Apps cho dự án căn cứ hỏa lực hiện tại của bạn trong căn cứ hỏa lực console .

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ể thêm một căn cứ hỏa lực Android App cho dự án căn cứ hỏa lực hiện tại của bạn.

LỜI YÊU CẦU

Gọi projects.androidApps.create . Đây là cách tạo phần thân yêu cầu của bạn:

  • Yêu cầu:

    • packageName : Tên gói kinh điển của ứng dụng Android vì nó sẽ xuất hiện trong giao diện điều khiển phát triển Google Play.
  • Tùy chọn, nhưng được khuyến nghị:

    • displayName : Tên hiển thị với người sử dụng giao của ứng dụng. Giá trị này là hữu ích cho việc tìm kiếm ứng dụng của bạn sau này trong căn cứ hỏa lực console .

Trong cơ thể yêu cầu ví dụ của chúng tôi, chúng tôi sẽ sử dụng packageNamedisplayName :

{
  "displayName": "My Firebase Android App"
  "packageName": "com.firebase.android"
}

Dưới đây là một ví dụ cho Node.js để thêm Ứng dụng Android Firebase vào dự án Firebase của bạn:

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

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

  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 đến projects.androidApps.create 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, hoạt động phải thành công.

Để kiểm tra xem các hoạt động thành công, bạn có thể gọi operations.get về hoạt động cho đến khi giá trị của donetrue và nó response là loại AndroidApp . Nếu hoạt động không thành, nó error được thiết lập để 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.AndroidApp",
    "name": "projects/first-cloud-project/androidApps/...",
    "appId": "...",
    "displayName": "My Firebase Android App",
    "projectId": "first-cloud-project",
    "packageName": "com.firebase.android"
  }
}

Kể từ khi donetrueresponse loại là một AndroidApp , các FirebaseProject hiện nay có một AndroidApp . Câu trả lời cũng chứa thông tin hữu ích khác về mới được tạo ra căn cứ hỏa lực Android App của bạn, giống như độc đáo căn cứ hỏa lực appId . Các Operation được tự động xóa sau khi hoàn thành.

Thêm chứng chỉ SHA

Bạn có thể thêm giấy chứng nhận SHA cho bất kỳ căn cứ hỏa lực Android App hiện bằng cách gọi projects.androidApps.sha.create . Cơ thể yêu cầu cuộc gọi phương pháp này phải có một sản phẩm nào name trường. Kết quả của cuộc gọi này là một trường hợp mới được thành lập ShaCertificate .

Khi gọi projects.androidApps.sha.create , bạn cần phải cung cấp một SHA-1 hoặc SHA-256 giấy chứng nhận băm hợp lệ. Bạn có thể lấy băm SHA chứng chỉ ký của bạn với gradle signingReport lệnh:

./gradlew signingReport

Để biết thêm thông tin, hãy truy cập Google API dành cho Android .

Bạn có thể liên kết một hiện tài khoản Google Analytics để hiện tại của bạn FirebaseProject lập trình. Lưu ý rằng bạn cũng có thể liên kết dự án căn cứ hỏa lực hiện tại của bạn với Google Analytics trong Integrations tab Cài đặt dự án của bạn.

Các cuộc gọi đến projects.addGoogleAnalytics đòi hỏi một analytics_resource , mà một trong hai có thể là một analyticsAccountId hoặc một analyticsPropertyId :

  • Chỉ định một hiện analyticsAccountId để cung cấp một sản phẩm Google Analytics mới trong tài khoản cụ thể và liên kết thuộc tính mới với dự án căn cứ hỏa lực của bạn.

  • Chỉ định một hiện analyticsPropertyId để kết hợp các sản phẩm Google Analytics với dự án căn cứ hỏa lực của bạn.

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

Khi bạn gọi projects.addGoogleAnalytics :

  1. Các kiểm tra đầu tiên xác định nếu bất kỳ dữ liệu hiện có suối trong tương ứng với sản phẩm Google Analytics cho bất kỳ căn cứ hỏa lực Apps hiện tại của bạn FirebaseProject (dựa trên packageName hoặc bundleId gắn liền với dò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, thì 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ề hệ thống cấp bậc và cấu trúc của Google Analytics chiếm trong tài liệu Analytics .

LỜI YÊU CẦU

Gọi projects.addGoogleAnalytics .

Trong cơ thể yêu cầu cuộc gọi ví dụ của chúng tôi để project.addGoogleAnalytics , chúng tôi sẽ chỉ định tài khoản Google Analytics của chúng tôi analyticsAccountId . Đây cung cấp cuộc gọi sẽ 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à một 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 đế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, hoạt động phải thành công.

Để kiểm tra xem các hoạt động thành công, bạn có thể gọi operations.get về hoạt động cho đến khi giá trị của donetrueresponse là loại analyticsDetails . Nếu hoạt động không thành, nó error được thiết lập để 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": "..."
      }
    ]
  }
}

Kể từ khi done là đúng và các response loại là analyticsDetails , các FirebaseProject hiện đang liên kết với tài khoản Google Analytics được chỉ định. Các Operation được tự động 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 căn cứ hỏa lực của bạn sẽ sử dụng đám mây FireStore, Cloud Storage, hoặc một ứng dụng App Engine, bạn có thể hoàn thiện Google Cloud Platform (GCP) vị trí tài nguyên mặc định cho dự án của bạn lập trình. Lưu ý rằng bạn cũng có thể chọn một vị trí trong căn cứ hỏa lực console .

Trước khi cài đặ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 mà vị trí là tốt nhất cho dự án của bạn. Bạn cũng nên gọi projects.availableLocations để trả về một danh sách các địa điểm có giá trị cho dự án của bạn bởi vì nếu dự án của bạn là một phần của một tổ chức đám mây của Google, sau đó bạn chính sách tổ chức có thể hạn chế những vị trí có giá trị cho dự án của bạn.

Kêu gọi này defaultLocation.finalize phương pháp tạo ra một ứng dụng App Engine với một mặc định xô Cloud Storage nằm ở locationId mà bạn cung cấp trong cơ thể theo yêu cầu.

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

LỜI YÊU CẦU

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

  • Yêu cầu:

    • locationId : Vị trí, nơi dữ liệu được lưu trữ cho các dịch vụ GCP đòi hỏi một thiết lập vị trí, giống như đám mây 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 cuộc gọi đến projects.defaultLocation.finalize 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, hoạt động phải thành công.

Để kiểm tra xem các hoạt động thành công, bạn có thể gọi operations.get về hoạt động cho đến khi giá trị của donetrue và nó response là loại google.protobuf.Empty . Nếu hoạt động không thành công, cơ thể phản ứng error sẽ loại google.rpc.Status . Các Operation được tự động xóa sau khi hoàn thành.