Firebase Management REST API เปิดใช้การตั้งค่าแบบเป็นโปรแกรมและการจัดการโปรเจ็กต์ Firebase รวมถึงทรัพยากร Firebase ของโปรเจ็กต์และแอป Firebase
ภาพรวมนี้อธิบายเวิร์กโฟลว์ทั่วไปในการเพิ่มทรัพยากรและแอป Firebase ให้กับ โปรเจ็กต์ Google Cloud ที่มีอยู่ซึ่งไม่ได้ใช้บริการ 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 APIs
- เมื่อได้รับแจ้ง ให้เลือกโครงการ 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 สองโครงการที่สามารถเพิ่มบริการ 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
กต์.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
ไปที่ operation จนกว่าค่า 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 Android ให้กับโปรเจ็กต์ Firebase ที่มีอยู่ได้
ขอ
โทร projects.androidApps.create
กต์.androidApps.create ต่อไปนี้เป็นวิธีสร้างเนื้อหาคำขอของคุณ:
ที่จำเป็น:
-
packageName
: ชื่อแพ็กเกจ Canonical ของแอป Android ตามที่ปรากฏในคอนโซลนักพัฒนาซอฟต์แวร์ Google Play
-
ไม่บังคับ แต่แนะนำ:
-
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
ไปที่ operation จนกว่าค่า 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 ที่สร้างขึ้นใหม่ เช่น Firebase appId
ที่ไม่ซ้ำกัน การ Operation
จะถูกลบโดยอัตโนมัติหลังจากเสร็จสิ้น
เพิ่มใบรับรอง SHA
คุณสามารถเพิ่มใบรับรอง SHA ให้กับแอป Firebase Android ที่มีอยู่ได้โดยเรียก projects.androidApps.sha.create
กต์.androidApps.sha.create เนื้อหาคำขอสำหรับการเรียกเมธอดนี้ต้องมีฟิลด์ name
ว่าง ผลลัพธ์ของการโทรนี้คืออินสแตนซ์ ShaCertificate
ที่สร้างขึ้นใหม่
เมื่อเรียก projects.androidApps.sha.create
คุณต้องระบุแฮชใบรับรอง SHA-1 หรือ SHA-256 ที่ถูกต้อง คุณสามารถรับแฮช SHA ของใบรับรองการลงนามของคุณด้วยคำสั่ง 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
ของคุณหรือไม่ (ตามชื่อแพ็กbundleId
packageName
เชื่อมโยงกับสตรีมข้อมูล) จากนั้นสตรีมข้อมูลและแอปจะเชื่อมโยงกันตามความเหมาะสม โปรดทราบว่าการเชื่อมโยงอัตโนมัตินี้ใช้กับแอป Android และ iOS เท่านั้นหากไม่พบสตรีมข้อมูลที่สอดคล้องกันสำหรับแอป Firebase สตรีมข้อมูลใหม่จะได้รับการจัดสรรในพร็อพเพอร์ตี้ Google Analytics สำหรับแอป Firebase แต่ละแอป โปรดทราบว่าเว็บแอปจะจัดเตรียมสตรีมข้อมูลใหม่เสมอ แม้ว่าก่อนหน้านี้จะเชื่อมโยงกับสตรีมข้อมูลในพร็อพเพอร์ตี้ Analytics ก็ตาม
เรียนรู้เพิ่มเติมเกี่ยวกับลำดับชั้นและโครงสร้างของบัญชี Google Analytics ใน เอกสารประกอบ ของ Analytics
ขอ
โทร projects.addGoogleAnalytics
กต์.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
ต์ addGoogleAnalytics คือ Operation
ก่อนที่คุณจะเรียกใช้ปลายทางอื่นๆ ที่เกี่ยวข้องกับ Firebase สำหรับโปรเจ็กต์ของคุณได้ การดำเนินการจะต้องสำเร็จเสียก่อน
ในการตรวจสอบว่าการดำเนินการสำเร็จหรือไม่ คุณสามารถเรียก operations.get
ไปที่ operation จนกว่าค่า 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 Platform (GCP) เริ่มต้น สำหรับโปรเจ็กต์ของคุณโดยใช้โปรแกรมได้ โปรดทราบว่าคุณสามารถเลือกตำแหน่งใน คอนโซล Firebase
ก่อนตั้งค่าตำแหน่งนี้ ให้ตรวจสอบ เลือกสถานที่สำหรับโครงการของคุณ เพื่อดูข้อมูลตำแหน่งที่เหมาะสมที่สุดสำหรับโครงการของคุณ คุณควรเรียก projects.availableLocations
ต์. AvailableLocations เพื่อส่งคืนรายการสถานที่ที่ถูกต้องสำหรับโปรเจ็กต์ของคุณ เนื่องจากหากโปรเจ็กต์ของคุณเป็นส่วนหนึ่งขององค์กร Google Cloud นโยบายองค์กรของคุณอาจจำกัดสถานที่ที่ ถูกต้องสำหรับโปรเจ็กต์ของคุณ
การเรียกเมธอด defaultLocation.finalize
นี้จะสร้างแอปพลิเคชัน App Engine ที่มีบัคเก็ต Cloud Storage เริ่มต้น อยู่ใน locationId
ที่คุณระบุในเนื้อหาคำขอ
ตำแหน่งทรัพยากร GCP เริ่มต้นอาจถูกระบุแล้ว ถ้า Project
กต์มีแอปพลิเคชัน App Engine อยู่แล้ว หรือก่อนหน้านี้มีการเรียกวิธีการ defaultLocation.finalize
ขอ
โทร projects.defaultLocation.finalize
กต์.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
ที่ operation จนกว่าค่า done
จะเป็น true
และการ response
เป็นประเภท google.protobuf.Empty
หากการดำเนินการไม่สำเร็จ error
ของเนื้อหาการตอบสนองจะเป็นประเภท google.rpc.Status
การ Operation
จะถูกลบโดยอัตโนมัติหลังจากเสร็จสิ้น