Firebase Management REST API ช่วยในการตั้งค่าและจัดการโปรเจ็กต์ Firebase โดยใช้โปรแกรม รวมถึงทรัพยากร Firebase และแอป Firebase ของโปรเจ็กต์
คุณข้ามไปยังส่วนที่เฉพาะเจาะจงในหน้านี้ได้หากคุณต้องการ
- เพิ่มบริการ 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 ที่จะเพิ่มแอป 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
ลิงก์โปรเจ็กต์ 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
โดยอัตโนมัติหลังจากดำเนินการเสร็จสิ้น