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

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

ภาพรวมนี้อธิบายเวิร์กโฟลว์ทั่วไปในการเพิ่มทรัพยากรและแอป Firebase ลงในGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle CloudGoogle Cloud��

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

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

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

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

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

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

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

  1. เปิดหน้า Firebase Management API ในคอนโซล Google API
  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 ของ done จะเป็นประเภท 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

คุณสามารถเพิ่มแอป Firebase สำหรับ Android ลงในโปรเจ็กต์ Firebase ที่มีอยู่

คำขอ

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

  • ต้องระบุ:

    • packageName: ชื่อแพ็กเกจตามหลักเกณฑ์ของแอป Android ตามที่ปรากฏใน Google Play Console
  • ไม่บังคับแต่แนะนำ

    • displayName: ชื่อที่แสดงของแอปซึ่งผู้ใช้กำหนด ค่านี้มีประโยชน์สำหรับการค้นหาแอปในภายหลังในคอนโซล Firebase

ในตัวอย่างนี้ เราจะใช้ packageName และ displayName ในเนื้อหาของคำขอ

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

ตัวอย่างของ Node.js ที่จะเพิ่มแอป Android ใน Firebase ลงในโปรเจ็กต์ Firebase มีดังนี้

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

ผลลัพธ์

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

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

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

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

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

เพิ่มใบรับรอง SHA

คุณเพิ่มใบรับรอง SHA ในแอป Firebase บน Android ใดก็ได้ที่มีอยู่โดยเรียกใช้ projects.androidApps.sha.create เนื้อหาคำขอสำหรับการเรียกเมธอดนี้ต้องมีช่อง name ที่ว่างเปล่า ผลลัพธ์ของการเรียกนี้เป็นอินสแตนซ์ที่สร้างขึ้นใหม่ของ ShaCertificate

เมื่อเรียกใช้ projects.androidApps.sha.create คุณต้องระบุแฮชใบรับรอง SHA-1 หรือ SHA-256 ที่ถูกต้อง คุณดูแฮช SHA ของใบรับรองการรับรองได้ด้วยคำสั่ง gradle signingReport ดังนี้

./gradlew signingReport

ดูข้อมูลเพิ่มเติมได้ที่ Google APIs สำหรับ Android

คุณสามารถลิงก์บัญชี 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 โดยอัตโนมัติหลังจากดำเนินการเสร็จสิ้น