ตั้งค่าและจัดการโปรเจ็กต์ Firebase โดยใช้ Management REST API

Firebase Management REST API การตั้งค่าและการจัดการโปรเจ็กต์ Firebase แบบเป็นโปรแกรม ซึ่งรวมถึง ทรัพยากร Firebase และแอป Firebase

ภาพรวมนี้อธิบายถึงเวิร์กโฟลว์ทั่วไปสำหรับเพิ่มทรัพยากร Firebase และ ไปยัง Google Cloud ที่มีอยู่ โปรเจ็กต์ ที่ไม่ได้ใช้บริการ Firebase ในขณะนี้

คุณข้ามไปยังส่วนที่เฉพาะเจาะจงในหน้านี้ได้หากคุณต้องการ

ก่อนที่จะดำเนินการตามขั้นตอนใดๆ ในหน้านี้ โปรดตรวจสอบว่าคุณได้ เปิดใช้ API

ดูข้อมูลเกี่ยวกับการจัดการการเข้าถึงสำหรับ Firebase Management API ได้ที่ Cloud Identity Access Management (IAM) API เอกสารประกอบ

ก่อนเริ่มต้น

ก่อนเริ่มต้น คุณจะต้องเปิดใช้ Management API สำหรับ โปรเจ็กต์ Google Cloud และ สร้างโทเค็นเพื่อการเข้าถึง

เปิดใช้ Management REST API สำหรับโปรเจ็กต์ Google Cloud

คุณจะต้องเปิดใช้ API การจัดการของ Firebase เพื่อใช้กับโปรเจ็กต์ Google Cloud ของคุณ

  1. เปิด API การจัดการของ Firebase ในคอนโซล Google APIs
  2. เมื่อมีข้อความแจ้ง ให้เลือกโปรเจ็กต์ Google Cloud
  3. คลิกเปิดใช้ในหน้า Firebase Management API

สร้างโทเค็นเพื่อการเข้าถึง API

ต่อไปนี้เป็นตัวอย่างสำหรับ Node.js ที่ดึงโทเค็นเพื่อการเข้าถึง

ขั้นแรก หากไม่ได้อยู่ในสภาพแวดล้อม Google Cloud ให้ตั้งค่า ตัวแปรสภาพแวดล้อม GOOGLE_APPLICATION_CREDENTIALS ไปยังเส้นทางไปยัง คีย์บัญชีบริการ

Linux หรือ macOS

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

Windows

ด้วย PowerShell:

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

จากนั้นใช้ Firebase Admin SDK เพื่อรับโทเค็นเพื่อการเข้าถึงจากบริการของคุณ ข้อมูลเข้าสู่ระบบบัญชี:

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

ค้นหาชื่อทรัพยากรของโปรเจ็กต์

คุณจะเห็น Google Cloud โปรเจ็กต์ที่มีอยู่สำหรับการเพิ่ม Firebase บริการต่างๆ

ส่งคำขอ

โทร availableProjects.list เนื้อหาคำขอสำหรับการโทรนี้ต้องว่างเปล่า

ต่อไปนี้คือตัวอย่างของ Node.js ที่ใช้ในการขอรายการ Google Cloud ที่ใช้ได้ โปรเจ็กต์:

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

ผลลัพธ์

เนื้อหาการตอบกลับจากการเรียกไปยัง availableProjects.list มีรายการของ ProjectInfo ออบเจ็กต์ หากรายการโปรเจ็กต์ยาวเกินไป เนื้อหาการตอบกลับจะมีแอตทริบิวต์ nextPageToken ที่คุณสามารถใช้เป็นพารามิเตอร์การค้นหาเพื่อรับหน้าถัดไปของ โปรเจ็กต์

ต่อไปนี้คือตัวอย่างเนื้อหาการตอบสนองของการเรียก availableProjects.list

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

การตอบกลับตัวอย่างนี้มี Google Cloud 2 โปรเจ็กต์ที่มี Firebase ได้ บริการที่เพิ่มเข้ามา โปรดทราบว่าช่อง project จะมีฟิลด์ ชื่อทรัพยากรที่ไม่ซ้ำกันสำหรับโปรเจ็กต์

คุณสามารถใช้ค่า project ใดก็ได้ที่ระบุไว้ในคำตอบจาก availableProjects.listเพื่อเพิ่มบริการ Firebase หรือ เพิ่มแอปลงในโปรเจ็กต์

ในส่วนถัดไป เราจะเพิ่มบริการ Firebase ไปยัง First Cloud Project โดยใช้ ชื่อทรัพยากร projects/first-gcp-project

เพิ่มบริการ Firebase ในโปรเจ็กต์

มี Google Cloud โปรเจ็กต์ที่สามารถใช้ประโยชน์จากบริการที่นำเสนอโดย Firebase ใน ในส่วนนี้ คุณจะได้เรียนรู้วิธีเพิ่มบริการ Firebase ลงใน Google Cloud โปรเจ็กต์แบบเป็นโปรแกรม โปรดทราบว่าคุณยังสามารถเพิ่ม Firebase บริการลงในโปรเจ็กต์ Google Cloud ที่มีอยู่ในคอนโซล Firebase

ส่งคำขอ

โทร projects.addFirebase เนื้อหาคำขอสำหรับการโทรนี้ต้องว่างเปล่า

นี่คือตัวอย่างสำหรับ Node.js ที่จะเพิ่มบริการ Firebase ไปยัง 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']);
  }
}

ผลลัพธ์

ผลการเรียกไปยัง projects.addFirebase คือ Operation ก่อนคุณ สามารถเรียกใช้ปลายทางอื่นๆ ที่เกี่ยวข้องกับ Firebase สำหรับโปรเจ็กต์ของคุณได้ โดยการดำเนินการต้อง ประสบความสำเร็จ

หากต้องการตรวจสอบว่าการดำเนินการสำเร็จหรือไม่ คุณสามารถโทรติดต่อ operations.get ในการดำเนินการจนกว่าค่าของ done จะเป็น true และ response เท่ากับ พิมพ์ FirebaseProject หากการดำเนินการไม่สำเร็จ ระบบจะตั้งค่า error เป็น google.rpc.Status

นี่คือเนื้อหาการตอบกลับของการเรียก 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"
    }
  }
}

เนื่องจาก done คือ true และประเภท response คือ FirebaseProject ค่า ตอนนี้ Google Cloud โปรเจ็กต์มีบริการ Firebase แล้ว คำตอบยังมี ข้อมูลที่เป็นประโยชน์อื่นๆ เกี่ยวกับ FirebaseProject ที่สร้างขึ้นใหม่ เช่น projectNumber และ resources เริ่มต้น ระบบจะ Operation โดยอัตโนมัติ ลบทิ้งหลังจบหลักสูตร

เพิ่มแอป Firebase ในโปรเจ็กต์

แอปต่างๆ จะใช้ FirebaseProject ได้ ซึ่งรวมถึง iOS, Android และเว็บ แอป ในส่วนนี้ คุณจะได้เรียนรู้วิธีเพิ่มแอป Firebase ลงใน FirebaseProject แบบเป็นโปรแกรม โปรดทราบว่าคุณยังสามารถเพิ่มแอป Firebase ลงใน โปรเจ็กต์ Firebase ที่มีอยู่ในคอนโซล Firebase

เลือกประเภทของแอป Firebase ที่จะเพิ่มในโปรเจ็กต์ Firebase

คุณสามารถลิงก์บัญชี บัญชี Google Analytics ไปยังบัญชี FirebaseProject แบบเป็นโปรแกรม โปรดทราบว่าคุณยังสามารถลิงก์ โปรเจ็กต์ Firebase ไปยัง Google Analytics ในไฟล์ การผสานรวม ของการตั้งค่าโปรเจ็กต์

การโทรไปยัง projects.addGoogleAnalytics ต้องใช้ analytics_resource ซึ่งอาจเป็น analyticsAccountId หรือ analyticsPropertyId ก็ได้:

  • ระบุ analyticsAccountId ที่มีอยู่เพื่อจัดสรร Google Analytics ใหม่ ภายในบัญชีที่ระบุ และเชื่อมโยงพร็อพเพอร์ตี้ใหม่กับ โปรเจ็กต์ Firebase

  • ระบุ analyticsPropertyId ที่มีอยู่เพื่อเชื่อมโยง Google Analytics กับโปรเจ็กต์ Firebase

คุณสามารถค้นหาทั้ง analyticsAccountId และ analyticsPropertyId ใน Google Analytics เว็บไซต์ของคุณ

เมื่อคุณโทรหา projects.addGoogleAnalytics:

  1. การตรวจสอบครั้งแรกจะกำหนดว่าสตรีมข้อมูลที่มีอยู่ใน Google พร็อพเพอร์ตี้ Analytics สอดคล้องกับแอป Firebase ที่มีอยู่ใน FirebaseProject (อิงตามpackageNameหรือbundleIdที่เชื่อมโยงกับ สตรีมข้อมูล) จากนั้นสตรีมข้อมูลและแอปจะลิงก์กันตามแต่กรณี โปรดทราบว่าการลิงก์อัตโนมัตินี้จะมีผลกับแอป Android และ iOS เท่านั้น

  2. หากไม่พบสตรีมข้อมูลที่เกี่ยวข้องสำหรับแอป Firebase ระบบจะแสดงข้อมูลใหม่ มีการจัดสรรสตรีมในพร็อพเพอร์ตี้ Google Analytics สำหรับ แอป Firebase โปรดทราบว่าจะมีการจัดสรรสตรีมข้อมูลใหม่สำหรับเว็บเสมอ แอปแม้ว่าก่อนหน้านี้จะเคยเชื่อมโยงกับสตรีมข้อมูลใน พร็อพเพอร์ตี้ Analytics

ดูข้อมูลเพิ่มเติมเกี่ยวกับลำดับชั้นและโครงสร้างบัญชี Google Analytics ใน เอกสาร Analytics

ส่งคำขอ

โทร projects.addGoogleAnalytics

ในเนื้อหาคำขอสำหรับตัวอย่างการโทรไปยัง project.addGoogleAnalytics เราจะ ระบุบัญชี Google Analytics analyticsAccountId ของเรา การโทรนี้จะ จะจัดสรรพร็อพเพอร์ตี้ Google Analytics ใหม่และเชื่อมโยงพร็อพเพอร์ตี้ใหม่กับ FirebaseProject

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

ต่อไปนี้คือตัวอย่าง Node.js ที่ใช้ลิงก์โปรเจ็กต์ Firebase กับ 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']);
  }
}

ผลลัพธ์

ผลการเรียกไปยัง projects.addGoogleAnalytics คือ Operation ก่อนคุณ สามารถเรียกใช้ปลายทางอื่นๆ ที่เกี่ยวข้องกับ Firebase สำหรับโปรเจ็กต์ของคุณได้ โดยการดำเนินการต้อง ประสบความสำเร็จ

หากต้องการตรวจสอบว่าดำเนินการสำเร็จหรือไม่ คุณสามารถโทรหา operations.get ใน การดำเนินการจนกว่าค่าของ done จะเป็น true และ response เป็นประเภท analyticsDetails หากการดำเนินการไม่สำเร็จ ระบบจะตั้งค่า error เป็น google.rpc.Status

นี่คือเนื้อหาการตอบกลับของการเรียก operations.get:

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

เนื่องจาก done เป็นจริงและประเภท response คือ analyticsDetails พารามิเตอร์ ตอนนี้ FirebaseProject เชื่อมโยงกับบัญชี Google Analytics ที่ระบุแล้ว ระบบจะลบ Operation โดยอัตโนมัติหลังจากดำเนินการเสร็จสิ้น

ทำให้ตำแหน่งเริ่มต้นของโปรเจ็กต์เสร็จสมบูรณ์ (ไม่บังคับ)

หากโปรเจ็กต์ Firebase จะใช้ Cloud Firestore, Cloud Storage หรือ แอป App Engine คุณสามารถทำให้ Google Cloud เริ่มต้นได้ ตำแหน่งทรัพยากรแพลตฟอร์ม (GCP) สำหรับโปรเจ็กต์โดยอัตโนมัติ โปรดทราบว่าคุณยังสามารถเลือกตำแหน่งใน เวลา คอนโซล Firebase

ก่อนที่จะตั้งค่าตำแหน่งนี้ โปรดดูเลือกสถานที่สำหรับ ของโปรเจ็กต์ เพื่อดูข้อมูลเกี่ยวกับตำแหน่งที่ดีที่สุด โปรเจ็กต์ของคุณ คุณควรโทรหา projects.availableLocations เพื่อส่งคืนรายการตำแหน่งที่ตั้งที่ถูกต้องของโครงการ เนื่องจากหากโครงการ เป็นส่วนหนึ่งขององค์กร Google Cloud จากนั้นนโยบายองค์กร อาจจำกัดสถานที่ตั้ง ใช้ได้กับโปรเจ็กต์ของคุณ

การเรียกใช้เมธอด defaultLocation.finalize นี้จะสร้าง App Engine แอปพลิเคชันที่มี Cloud Storage เริ่มต้น ที่เก็บข้อมูล ที่อยู่ใน locationId ที่คุณระบุไว้ในเนื้อหาคำขอ

ตำแหน่งทรัพยากร GCP เริ่มต้นอาจถูกระบุไว้แล้วหาก Project มีแอปพลิเคชัน App Engine หรือรายการนี้แล้ว ก่อนหน้านี้มีการเรียกเมธอด defaultLocation.finalize

ส่งคำขอ

โทร projects.defaultLocation.finalize วิธีสร้างเนื้อหาคำขอมีดังนี้

  • ต้องระบุ:

    • locationId: ตำแหน่งที่เก็บข้อมูลของคุณสำหรับบริการ GCP ที่ต้องตั้งค่าตำแหน่ง เช่น Cloud Firestore หรือ Cloud Storage
{
  "locationId": "us-west2"
}

ต่อไปนี้คือตัวอย่าง Node.js ในการทำให้ตำแหน่งเริ่มต้นของโปรเจ็กต์เสร็จสมบูรณ์

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

ผลลัพธ์

ผลการเรียกไปยัง projects.defaultLocation.finalize คือ Operation ก่อนคุณ สามารถเรียกใช้ปลายทางอื่นๆ ที่เกี่ยวข้องกับ Firebase สำหรับโปรเจ็กต์ของคุณได้ โดยการดำเนินการต้อง ประสบความสำเร็จ

หากต้องการตรวจสอบว่าดำเนินการสำเร็จหรือไม่ คุณสามารถโทรหา operations.get ใน การดำเนินการจนกว่าค่าของ done จะเป็น true และ response เป็นประเภท google.protobuf.Empty หากการดำเนินการไม่สำเร็จ เนื้อหาการตอบกลับ error จะเป็นประเภท google.rpc.Status ระบบจะ Operation โดยอัตโนมัติ ลบทิ้งหลังจบหลักสูตร