Firebase Management REST API ช่วยในการตั้งค่าและจัดการโปรเจ็กต์ Firebase โดยใช้โปรแกรม รวมถึงทรัพยากร Firebase และแอป Firebase ของโปรเจ็กต์
ภาพรวมนี้อธิบายเวิร์กโฟลว์ทั่วไปในการเพิ่มทรัพยากรและแอป Firebase ลงในGoogle Cloud��
คุณข้ามไปยังส่วนที่ต้องการในหน้านี้ได้หากต้องการ โดยทำดังนี้
- เพิ่มบริการ Firebase ลงในโปรเจ็กต์
- เพิ่มแอป Firebase ลงในโปรเจ็กต์ Firebase
- ลิงก์โปรเจ็กต์ Firebase กับบัญชี Google Analytics
ก่อนทำตามขั้นตอนในหน้านี้ โปรดตรวจสอบว่าคุณได้เปิดใช้ API แล้ว
ดูข้อมูลเกี่ยวกับการจัดการการเข้าถึงสําหรับ Firebase Management API ได้ที่เอกสารประกอบของ Cloud Identity Access Management (IAM) API
ก่อนเริ่มต้น
ก่อนเริ่มต้น คุณจะต้องเปิดใช้ Management API สำหรับโปรเจ็กต์ Google Cloud และสร้างโทเค็นการเข้าถึง
เปิดใช้ Management REST API สําหรับโปรเจ็กต์ Google Cloud
คุณจะต้องเปิดใช้ Firebase Management API เพื่อใช้กับโปรเจ็กต์ Google Cloud หากยังไม่ได้ดำเนินการ
- เปิดหน้า Firebase Management API ในคอนโซล Google API
- เมื่อมีข้อความแจ้ง ให้เลือกโปรเจ็กต์ Google Cloud
- คลิกเปิดใช้ในหน้า 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 เพื่อเพิ่มแอป 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
ของ done
จะเป็นประเภท 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 ของใบรับรองการลงนามได้ด้วยคำสั่ง signingReport
ของ Gradle ดังนี้
./gradlew signingReport
ดูข้อมูลเพิ่มเติมได้ที่ Google APIs for Android
ลิงก์โปรเจ็กต์ Firebase กับบัญชี Google Analytics (ไม่บังคับ)
คุณสามารถลิงก์บัญชี 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
การตรวจสอบแรกจะระบุว่าสตรีมข้อมูลที่มีอยู่ของพร็อพเพอร์ตี้ Google Analytics สอดคล้องกับแอป Firebase ที่มีอยู่หรือไม่ใน
FirebaseProject
(อิงตามpackageName
หรือbundleId
ที่เชื่อมโยงกับสตรีมข้อมูล) จากนั้นระบบจะลิงก์สตรีมข้อมูลและแอป (หากมี) โปรดทราบว่าการลิงก์อัตโนมัตินี้ใช้ได้กับแอป Android และแอป iOS เท่านั้นหากไม่พบสตรีมข้อมูลที่เกี่ยวข้องสําหรับแอป 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
โดยอัตโนมัติหลังจากดำเนินการเสร็จสิ้น