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

Firebase จัดการ REST API จะช่วยให้การตั้งค่าการเขียนโปรแกรมและการจัดการโครงการ Firebase รวมทั้งโครงการทรัพยากร Firebase และ Firebase ปพลิเคชัน

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

คุณสามารถข้ามไปยังส่วนต่างๆ ของหน้านี้ได้หากต้องการ:

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

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

ก่อนจะเริ่ม

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

เปิดใช้งาน Management REST API สำหรับโครงการ Google Cloud ของคุณ

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

  1. เปิด การจัดการ Firebase API หน้าคอนโซล Google APIs
  2. เมื่อได้รับแจ้ง ให้เลือกโครงการ Google Cloud ของคุณ
  3. คลิกเปิดใช้งานบนหน้าการจัดการ Firebase 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 สองโครงการที่สามารถเพิ่มบริการ 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

คุณสามารถเพิ่ม Firebase App Android เพื่อโครงการ Firebase ที่คุณมีอยู่

ขอ

โทร projects.androidApps.create ต่อไปนี้เป็นวิธีสร้างเนื้อหาคำขอของคุณ:

  • ที่จำเป็น:

    • packageName : ชื่อแพคเกจที่ยอมรับของแอป Android เป็นก็จะปรากฏในคอนโซลพัฒนาซอฟต์แวร์ Google Play
  • ไม่บังคับ แต่แนะนำ:

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

ในร่างกายร้องขอสำหรับตัวอย่างของเราเราจะใช้ packageName และ displayName :

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

ต่อไปนี้คือตัวอย่างสำหรับ Node.js ในการเพิ่มแอป Firebase Android ให้กับโปรเจ็กต์ 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 App เช่นที่ไม่ซ้ำกัน Firebase appId Operation จะถูกลบโดยอัตโนมัติหลังจากที่เสร็จสิ้น

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

คุณสามารถเพิ่มใบรับรอง SHA ใด ๆ ที่มีอยู่ Firebase Android App โดยการเรียก 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 ใน Integrations แท็บการตั้งค่าโครงการของคุณ

เรียกร้องให้ 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 ของคุณจะใช้ระบบคลาวด์ FireStore, การจัดเก็บเมฆหรือแอป App Engine คุณสามารถจบ ของ Google Cloud Platform (GCP) ที่ตั้งของทรัพยากรเริ่มต้น สำหรับโครงการของคุณโปรแกรม โปรดทราบว่าคุณยังสามารถเลือกสถานที่ในการ คอนโซล Firebase

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

โทรนี้ defaultLocation.finalize วิธีการสร้างแอพลิเคชัน App Engine ด้วยการ เริ่มต้นถัง Cloud Storage ที่ตั้งอยู่ใน locationId ที่คุณให้ในร่างกายร้องขอ

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

ขอ

โทร projects.defaultLocation.finalize ต่อไปนี้เป็นวิธีสร้างเนื้อหาคำขอของคุณ:

  • ที่จำเป็น:

    • locationId : สถานที่ที่ข้อมูลของคุณจะถูกเก็บไว้สำหรับการให้บริการ GCP ที่จำเป็นต้องมีการตั้งค่าตำแหน่งเหมือนเมฆ FireStore หรือการจัดเก็บเมฆ
{
  "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 จะถูกลบโดยอัตโนมัติหลังจากที่เสร็จสิ้น