Google Health API cho phép ứng dụng của bạn nhận thông báo theo thời gian thực khi dữ liệu sức khoẻ của người dùng thay đổi. Thay vì thăm dò các thay đổi, máy chủ của bạn sẽ nhận được yêu cầu HTTPS POST (webhook){:target="_blank" class="external"} ngay khi có dữ liệu trong Google Health API.
Loại dữ liệu được hỗ trợ
Thông báo webhook được hỗ trợ cho các loại dữ liệu sau:
- Số phút hoạt động cho vùng nhịp tim
- Mức độ hoạt động
- Cao độ
- Đường huyết
- Lượng mỡ trong cơ thể
- Lượng calo tiêu thụ theo vùng tần số tim
- Sự thay đổi tần số tim hằng ngày
- Vùng tần số tim hằng ngày
- Độ bão hoà oxy hằng ngày
- Nhịp thở hằng ngày
- Tần số tim lúc nghỉ ngơi hằng ngày
- Số liệu thống kê nhiệt độ hằng ngày khi ngủ
- Khoảng cách
- Bài tập
- Tầng
- Nhịp tim
- Sự thay đổi nhịp tim
- Chiều cao
- Nhật ký về lượng nước uống
- Nhật ký dinh dưỡng
- Tóm tắt giấc ngủ theo nhịp thở
- Tốc độ tiêu thụ oxy tối đa khi chạy
- Khoảng thời gian ít vận động
- Ngủ
- Các bước
- Thời gian ở vùng tần số tim
- Tổng lượng calo
- Trọng lượng
Hệ thống chỉ gửi thông báo cho những loại dữ liệu này khi người dùng đã đồng ý cho một trong các phạm vi tương ứng:
- Hoạt động, bao gồm các kiểu dữ liệu về số bước, độ cao, khoảng cách và số tầng:
https://www.googleapis.com/auth/googlehealth.activity_and_fitness.readonlyhttps://www.googleapis.com/auth/googlehealth.activity_and_fitness.writeonly
- Chỉ số sức khoẻ, bao gồm loại dữ liệu về cân nặng:
https://www.googleapis.com/auth/googlehealth.health_metrics_and_measurements.readonlyhttps://www.googleapis.com/auth/googlehealth.health_metrics_and_measurements.writeonly
- Giấc ngủ, bao gồm loại dữ liệu giấc ngủ:
https://www.googleapis.com/auth/googlehealth.sleep.readonlyhttps://www.googleapis.com/auth/googlehealth.sleep.writeonly
Tài khoản dịch vụ IAM
Mặc dù không bắt buộc, nhưng bạn nên sử dụng Tài khoản dịch vụ IAM khi định cấu hình người đăng ký cho Google Health API. Tài khoản dịch vụ cung cấp khả năng bảo mật tốt hơn cho các tải công việc của ứng dụng so với tài khoản người dùng tiêu chuẩn thông qua các tính năng sau:
- Thông tin đăng nhập tự động có thời hạn ngắn: Khi được đính kèm vào một môi trường thực thi Google Cloud (chẳng hạn như Compute Engine, Cloud Run hoặc Google Kubernetes Engine), tài khoản dịch vụ sẽ tự động lấy và xoay vòng thông tin đăng nhập an toàn có thời hạn ngắn. Điều này giúp loại bỏ rủi ro khi quản lý và lưu trữ các khoá tĩnh liên tục.
- Nguyên tắc về đặc quyền tối thiểu: Tài khoản dịch vụ cung cấp danh tính chuyên dụng cho khối lượng công việc. Bạn chỉ có thể cấp cho họ những quyền cụ thể cần thiết để quản lý các điểm cuối của người đăng ký, tránh cấp quyền truy cập rộng hơn vào các tài nguyên của Google Cloud.
- Tính độc lập về vòng đời: Tài khoản dịch vụ hoạt động độc lập với tài khoản của bất kỳ người dùng cá nhân nào, đảm bảo rằng những thay đổi về nhân sự không ảnh hưởng đến tính ổn định của hoạt động xác thực trong dài hạn.
Thiết lập tài khoản dịch vụ
Cách định cấu hình ứng dụng thuê bao để xác thực bằng tài khoản dịch vụ:
- Tạo một tài khoản dịch vụ: Trong bảng điều khiển Cloud, hãy chuyển đến Trang quản trị IAM và Quản trị của dự án để tạo một tài khoản dịch vụ mới do người dùng quản lý.
- Cấp các vai trò IAM cần thiết: Chỉ định các vai trò thích hợp cho tài khoản dịch vụ cần thiết để quản lý người đăng ký trong dự án trên đám mây của bạn.
- Đính kèm tài khoản dịch vụ vào khối lượng công việc của bạn: Định cấu hình môi trường lưu trữ logic người đăng ký để chạy dưới dạng tài khoản dịch vụ mới.
Điều này cho phép mã xử lý ứng dụng của bạn (chẳng hạn như thư viện ứng dụng API của Google) tự động phát hiện và sử dụng thông tin đăng nhập ngắn hạn của tài khoản dịch vụ khi gọi API REST
projects.subscribers.
Vai trò CPE
Để quản lý Người đăng ký hoặc gói thuê bao Google Health API, bạn phải cấp vai trò thích hợp cho Tài khoản dịch vụ được mạo danh thực hiện các lệnh gọi API. Tuỳ thuộc vào cấp độ truy cập cần thiết, hãy chỉ định một trong các vai trò sau:
- Google Health API Read
- Trình chỉnh sửa Google Health API
- Quản trị viên Google Health API
Tìm hiểu thêm về các vai trò và quyền IAM của Google Health API.
Quản lý người đăng ký
Để nhận được thông báo, bạn phải đăng ký một Subscriber (Người đăng ký), đại diện cho điểm cuối thông báo của ứng dụng. Bạn có thể quản lý người đăng ký bằng API REST có tại projects.subscribers.
Điểm cuối của người đăng ký phải sử dụng HTTPS (TLSv1.2 trở lên) và có thể truy cập công khai.
Trong quá trình tạo và cập nhật người đăng ký, Google Health API sẽ thực hiện một thử thách xác minh để đảm bảo bạn sở hữu URI điểm cuối. Nếu quy trình xác minh không thành công, các thao tác tạo và cập nhật người đăng ký sẽ không thành công với FailedPreconditionException.
Tạo người đăng ký
Để đăng ký một người đăng ký mới cho dự án của bạn, hãy sử dụng điểm cuối create. Bạn cần cung cấp:
project-id: Số dự án nơi tài khoản dịch vụ webhook được tạo.subscriberId: Giá trị nhận dạng duy nhất mà bạn cung cấp cho người đăng ký. Mã nhận dạng này phải có từ 4 đến 36 ký tự và khớp với biểu thức chính quy ([a-z]([a-z0-9-]{2,34}[a-z0-9])).endpointUri: URL đích cho thông báo webhook.subscriberConfigs: Các loại dữ liệu mà bạn muốn nhận thông báo và chính sách đăng ký cho từng loại.endpointAuthorization: Cơ chế uỷ quyền cho điểm cuối của bạn. Thành phần này phải chứa mộtsecretmà bạn cung cấp. Giá trị củasecretđược gửi trong tiêu đềAuthorizationcùng với mỗi thông báo. Bạn có thể dùng mã thông báo này để xác minh rằng các yêu cầu đến từ Google Health API. Ví dụ: bạn có thể đặtsecretthànhBearer R4nd0m5tr1ng123cho phương thức xác thực Bearer hoặcBasic dXNlcjpwYXNzd29yZA==cho phương thức xác thực cơ bản.
Trong subscriberConfigs, bạn phải đặt subscriptionCreatePolicy cho từng loại dữ liệu. Đặt thành AUTOMATIC để sử dụng tính năng tự động đăng ký hoặc MANUAL nếu bạn dự định tự quản lý gói thuê bao của người dùng. Hãy xem phần gói thuê bao tự động và gói thuê bao thủ công để biết thêm thông tin chi tiết về từng lựa chọn.
Yêu cầu
POST https://health.googleapis.com/v4/projects/project-id/subscribers?subscriberId=subscriber-id
{
"endpointUri": "https://myapp.com/webhooks/health",
"subscriberConfigs": [
{
"dataTypes": ["steps", "altitude", "distance", "floors", "weight"],
"subscriptionCreatePolicy": "AUTOMATIC"
},
{
"dataTypes": ["sleep"],
"subscriptionCreatePolicy": "MANUAL"
}
],
"endpointAuthorization": {
"secret": "Bearer example-secret-token"
}
}Phản hồi
{
"name": "projects/project-id/subscribers/subscriber-id",
"endpointUri": "https://myapp.com/webhooks/health",
"subscriberConfigs": [
{
"dataTypes": ["steps", "altitude", "distance", "floors", "weight"],
"subscriptionCreatePolicy": "AUTOMATIC"
},
{
"dataTypes": ["sleep"],
"subscriptionCreatePolicy": "MANUAL"
}
]
}Liệt kê người đăng ký
Sử dụng điểm cuối list để truy xuất tất cả người đăng ký đã đăng ký cho dự án của bạn.
Yêu cầu
GET https://health.googleapis.com/v4/projects/project-id/subscribers
Phản hồi
{
"subscribers": [
{
"name": "projects/project-id/subscribers/subscriber-id",
"endpointUri": "https://myapp.com/webhooks/health",
"subscriberConfigs": [
{
"dataTypes": ["steps", "altitude", "distance", "floors", "weight"],
"subscriptionCreatePolicy": "AUTOMATIC"
},
{
"dataTypes": ["sleep"],
"subscriptionCreatePolicy": "MANUAL"
}
],
"endpointAuthorization": {
"authorizationTokenSet": true
}
}
],
"totalSize": 1
}Cập nhật thông tin về người đăng ký
Sử dụng điểm cuối patch để cập nhật người đăng ký trong dự án của bạn. Các trường có thể cập nhật là endpointUri, subscriberConfigs và endpointAuthorization.
Bạn cập nhật các trường bằng cách cung cấp một tham số truy vấn updateMask và một nội dung yêu cầu. updateMask phải chứa một danh sách được phân tách bằng dấu phẩy gồm các tên trường mà bạn muốn cập nhật, sử dụng kiểu chữ lạc đà cho tên trường (ví dụ: endpointUri). Nội dung yêu cầu phải chứa một đối tượng Người đăng ký một phần có các giá trị mới cho những trường bạn muốn cập nhật. Chỉ những trường được chỉ định trong updateMask mới được cập nhật. Nếu bạn cung cấp các trường trong nội dung yêu cầu không có trong updateMask, thì các trường đó sẽ bị bỏ qua.
Nếu bạn cập nhật endpointUri hoặc endpointAuthorization, thì quy trình xác minh điểm cuối sẽ được thực hiện. Hãy xem bài viết Xác minh điểm cuối để biết thông tin chi tiết.
Khi cập nhật subscriberConfigs, hãy lưu ý rằng đây là một thao tác thay thế hoàn toàn chứ không phải là thao tác hợp nhất. Nếu subscriberConfigs có trong updateMask, tất cả cấu hình đã lưu trữ cho người đăng ký đó sẽ bị ghi đè bằng danh sách được cung cấp trong nội dung yêu cầu. Để thêm hoặc xoá một cấu hình, bạn phải cung cấp toàn bộ tập hợp cấu hình. Nếu bạn đang cập nhật các trường khác và muốn giữ nguyên cấu hình hiện tại, hãy bỏ qua subscriberConfigs trong updateMask.
Yêu cầu
PATCH https://health.googleapis.com/v4/projects/project-id/subscribers/subscriber-id?updateMask=endpointUri
{
"endpointUri": "https://myapp.com/new-webhooks/health"
}Phản hồi
{
"name": "projects/project-id/subscribers/subscriber-id",
"endpointUri": "https://myapp.com/new-webhooks/health",
"subscriberConfigs": [
{
"dataTypes": ["steps", "altitude", "distance", "floors", "weight"],
"subscriptionCreatePolicy": "AUTOMATIC"
},
{
"dataTypes": ["sleep"],
"subscriptionCreatePolicy": "MANUAL"
}
]
}Xoá người đăng ký
Sử dụng điểm cuối delete để xoá một người đăng ký khỏi dự án của bạn. Sau khi bị xoá, người đăng ký sẽ không còn nhận được thông báo nữa.
Yêu cầu
DELETE https://health.googleapis.com/v4/projects/project-id/subscribers/subscriber-id
Phản hồi
Nội dung phản hồi trống có trạng thái HTTP "200 OK" sẽ được trả về nếu việc xoá thành công.{}Xác minh điểm cuối
Để đảm bảo tính bảo mật và độ tin cậy của việc gửi thông báo, Google Health API thực hiện quy trình bắt tay xác minh hai bước bắt buộc bất cứ khi nào bạn tạo một người đăng ký hoặc cập nhật cấu hình điểm cuối của người đó (endpointUri hoặc endpointAuthorization). Quá trình này được thực hiện đồng bộ trong lệnh gọi API. Dịch vụ này gửi 2 yêu cầu POST tự động đến URI điểm cuối của bạn, sử dụng Google-Health-API-Webhooks-Verifier User-Agent, với nội dung JSON {"type": "verification"}.
- Bắt tay được uỷ quyền: Yêu cầu đầu tiên được gửi kèm theo tiêu đề
Authorizationmà bạn đã định cấu hình. Máy chủ của bạn phải phản hồi bằng trạng thái200 OKhoặc201 Created. - Thử thách không được uỷ quyền: Yêu cầu thứ hai được gửi mà không có thông tin đăng nhập.
Máy chủ của bạn phải phản hồi bằng trạng thái
401 Unauthorizedhoặc403 Forbidden.
Quy trình bắt tay này xác nhận rằng điểm cuối của bạn đang hoạt động và đang thực thi đúng cách tính năng bảo mật. Nếu một trong hai bước không thành công, yêu cầu API sẽ không thành công và trả về lỗi FAILED_PRECONDITION. Chỉ sau khi quá trình bắt tay này thành công, người đăng ký của bạn mới được lưu và kích hoạt để nhận thông báo về dữ liệu sức khoẻ.
Xoay vòng khoá
Nếu bạn cần xoay khoá cho endpointAuthorization, hãy làm theo các bước sau:
- Định cấu hình điểm cuối để chấp nhận cả giá trị
endpointAuthorizationcũ và mới. - Cập nhật cấu hình người đăng ký bằng giá trị
endpointAuthorizationmới bằng yêu cầupatchcó?updateMask=endpointAuthorization. - Định cấu hình điểm cuối để chỉ chấp nhận giá trị
endpointAuthorizationmới sau khi xác nhận bước 2 đã thành công.
Gói thuê bao của người dùng
Google Health API giúp bạn quản lý hiệu quả các gói thuê bao của người dùng, giảm nhu cầu đăng ký theo cách thủ công trong quá trình giới thiệu người dùng.
Đăng ký tự động
Bạn nên sử dụng tính năng đăng ký tự động. Để bật tính năng này, hãy đặt subscriptionCreatePolicy thành AUTOMATIC trong subscriberConfigs cho các kiểu dữ liệu cụ thể. dataTypes mà bạn chỉ định bằng chính sách AUTOMATIC là các loại dữ liệu giống nhau mà Google Health API gửi thông báo, miễn là sự đồng ý của người dùng cũng được cấp cho các loại dữ liệu đó.
Khi người dùng đồng ý cho ứng dụng đối với các phạm vi tương ứng với các loại dữ liệu có chính sách AUTOMATIC, Google Health API sẽ tự động theo dõi và gửi thông báo cho các loại dữ liệu là kết quả của sự giao nhau giữa các loại dữ liệu của người dùng đã đồng ý và các loại dữ liệu cấu hình người đăng ký tự động cho người dùng đó. Sau đó, thông báo sẽ được gửi đến điểm cuối của bạn bất cứ khi nào người dùng đó tạo dữ liệu mới cho các loại đó. Phương thức này hoạt động đối với những người dùng cấp sự đồng ý trước hoặc sau khi bạn tạo người đăng ký. Thông báo sẽ không được bổ sung dữ liệu cũ cho dữ liệu được tạo trước khi người đăng ký được tạo.
Nếu người dùng thu hồi sự đồng ý, thông báo cho các kiểu dữ liệu tương ứng sẽ dừng. Google quản lý các lượt đăng ký tự động và bạn không thể liệt kê hoặc xoá từng lượt đăng ký; các lượt đăng ký này chỉ bị xoá khi người đăng ký chính bị xoá.
Gói thuê bao thủ công
Nếu người đăng ký của bạn được định cấu hình bằng subscription_create_policy THỦ CÔNG cho các loại dữ liệu cụ thể, thì bạn phải tạo và quản lý gói thuê bao một cách rõ ràng cho từng người dùng. Subscription liên kết một người dùng cụ thể với điểm cuối của người đăng ký cho một tập hợp các loại dữ liệu được xác định. Nhà phát triển có thể sử dụng các API cụ thể để:
- Tạo (thủ công) gói thuê bao cho mỗi
healthUserId– Tạo một gói thuê bao mới cho một người dùng cụ thể. Phương thức này yêu cầu người đăng ký phải đặtSubscriptionCreatePolicythànhMANUALcho các loại dữ liệu được yêu cầu. - Cập nhật (thủ công) gói thuê bao – Cập nhật các kiểu dữ liệu cho gói thuê bao hiện có của người dùng.
- Xoá gói thuê bao (thủ công) – Xoá một gói thuê bao cụ thể của người dùng. Sau khi bị xoá, điểm cuối của người đăng ký sẽ không còn nhận được thông báo cho người dùng này đối với các loại dữ liệu được liên kết nữa.
- Liệt kê (thủ công) các lượt đăng ký – Liệt kê tất cả các lượt đăng ký đang hoạt động của một người đăng ký cụ thể. Bạn có thể lọc kết quả theo người dùng hoặc loại dữ liệu.
Thông báo
Khi dữ liệu của người dùng thay đổi đối với một loại dữ liệu đã đăng ký, Google Health API sẽ gửi một yêu cầu POST qua HTTPS đến URL điểm cuối của người đăng ký.
Định dạng thông báo
Tải trọng thông báo là một đối tượng JSON chứa thông tin chi tiết về thay đổi dữ liệu. Thông tin này bao gồm mã nhận dạng người dùng, kiểu dữ liệu và khoảng thời gian. Bạn có thể dùng thông tin này để truy vấn dữ liệu đã cập nhật.
{
"data": {
"version": "1",
"clientProvidedSubscriptionName": "subscription-name",
"healthUserId": "health-user-id",
"operation": "UPSERT",
"dataType": "steps",
"intervals": [
{
"physicalTimeInterval": {
"startTime": "2026-03-08T01:29:00Z",
"endTime": "2026-03-08T01:34:00Z"
},
"civilDateTimeInterval": {
"startDateTime": {
"date": {
"year": 2026,
"month": 3,
"day": 7
},
"time": {
"hours": 17,
"minutes": 29
}
},
"endDateTime": {
"date": {
"year": 2026,
"month": 3,
"day": 7
},
"time": {
"hours": 17,
"minutes": 34
}
}
},
"civilIso8601TimeInterval": {
"startTime": "2026-03-07T17:29:00",
"endTime": "2026-03-07T17:34:00"
}
}
]
}
}
Trường operation cho biết loại thay đổi đã kích hoạt thông báo:
UPSERT: Được gửi cho mọi hoạt động bổ sung hoặc sửa đổi dữ liệu.DELETE: Gửi khi người dùng xoá dữ liệu.
Bạn nên làm cho logic xử lý thông báo của mình trở nên bất biến, đặc biệt là đối với các thao tác UPSERT, vì các lần thử lại có thể khiến thông báo trùng lặp được gửi.
Trường clientProvidedSubscriptionName là một giá trị nhận dạng riêng biệt. Đối với những gói thuê bao có chính sách MANUAL, trường này chứa tên gói thuê bao cố định do nhà phát triển cung cấp, được chỉ định khi gói thuê bao được tạo.
Điều này cung cấp một mã nhận dạng ổn định để quản lý gói thuê bao theo cách thủ công. Đối với những lượt đăng ký được tạo bằng chính sách AUTOMATIC, Google Health API sẽ tự động tạo và chỉ định một giá trị nhận dạng duy nhất (một UUID ngẫu nhiên) cho trường này đối với mỗi thông báo. Việc thêm clientProvidedSubscriptionName cho cả chính sách thủ công và tự động đảm bảo định dạng tải trọng thông báo nhất quán trên tất cả các loại gói thuê bao.
healthUserId là một giá trị nhận dạng Google Health API cho người dùng có dữ liệu đã thay đổi. Nếu ứng dụng của bạn hỗ trợ nhiều người dùng, thì bạn có thể nhận được thông báo cho bất kỳ người dùng nào đã đồng ý cho ứng dụng của bạn. Khi bạn nhận được một thông báo, hãy dùng healthUserId để xác định dữ liệu của người dùng nào đã thay đổi, nhờ đó bạn có thể dùng thông tin xác thực OAuth của họ để truy vấn dữ liệu của họ.
Để liên kết thông tin đăng nhập OAuth của người dùng với healthUserId, hãy sử dụng điểm cuối getIdentity. Gọi điểm cuối này bằng thông tin đăng nhập của người dùng trong quá trình giới thiệu người dùng để truy xuất healthUserId của họ và lưu trữ mối liên kết này. Mối liên kết này không thay đổi theo thời gian, vì vậy, bạn có thể lưu vào bộ nhớ đệm vô thời hạn. Để biết ví dụ, hãy xem phần Lấy mã nhận dạng người dùng. Điều này cho phép bạn chọn thông tin đăng nhập chính xác của người dùng khi truy vấn dữ liệu dựa trên healthUserId trong một thông báo.
Phản hồi thông báo
Máy chủ của bạn phải phản hồi thông báo bằng mã trạng thái HTTP 204 No Content ngay lập tức. Để tránh hết thời gian chờ, hãy xử lý tải trọng thông báo không đồng bộ sau khi gửi phản hồi. Nếu Google Health API nhận được mã trạng thái khác hoặc yêu cầu hết thời gian chờ, thì API này sẽ thử gửi lại thông báo sau.
Ví dụ về Node.js (Express):
app.post('/webhook-receiver', (req, res) => {
// 1. Immediately acknowledge the notification
res.status(204).send();
// 2. Process the data asynchronously in the background
const notification = req.body;
setImmediate(() => {
console.log(`Update for user ${notification.data.healthUserId} of type ${notification.data.dataType}`);
// Trigger your data retrieval logic here
});
});
Xác minh chữ ký
Để đảm bảo tính xác thực của thông báo Webhook, tải trọng JSON thô của mọi thông báo webhook gửi đi đều được ký bằng khoá riêng tư bằng cách sử dụng PublicKeySign của Tink, cung cấp chữ ký được mã hoá Base64 trong tiêu đề HTTP GOOGLE-HEALTH-API-SIGNATURE trong yêu cầu. Các khoá ký này sẽ tự động xoay vòng sau mỗi 30 ngày và bộ khoá công khai chính thức tương ứng sẽ được phân phối dưới dạng tệp JSON tại URL cố định https://www.gstatic.com/googlehealthapi/webhooks/webhooks_public_keyset.json.
Cách xác minh chữ ký
Sử dụng Tink (Đề xuất): Nhà phát triển có thể xác minh chữ ký bằng cách sử dụng nguyên tắc cơ bản PublicKeyVerify của Tink. Tìm nạp bộ khoá công khai từ URL vĩnh viễn, khởi tạo nguyên tắc PublicKeyVerify bằng bộ khoá và xác minh tiêu đề GOOGLE-HEALTH-API-SIGNATURE đã giải mã dựa trên tải trọng JSON thô của webhook.
Xác minh thủ công (Không dùng Tink): Nếu chọn không dùng Tink, nhà phát triển có thể xác minh chữ ký theo cách thủ công bằng cách làm theo các bước sau:
- Giải mã base64 tiêu đề
GOOGLE-HEALTH-API-SIGNATUREđể tách tiền tố Tink 5 byte (chứa tiền tố phiên bản 1 byte và keyId 4 byte) khỏi chữ ký được mã hoá DER thực tế. - Tìm nạp keyset JSON từ https://www.gstatic.com/googlehealthapi/webhooks/webhooks_public_keyset.json.
- Xác định vị trí khoá khớp với keyId đã phân tích cú pháp và giải mã Base64 cho trường giá trị của khoá đó. Trường này chứa một vùng đệm giao thức EcdsaPublicKey được chuyển đổi tuần tự.
- Trích xuất toạ độ x và y theo thứ tự big-endian (thẻ Protobuf 3 và 4) từ tải trọng nhị phân này.
- Tạo một khoá công khai ECDSA P-256 tiêu chuẩn trong một thư viện mã hoá tích hợp bằng cách sử dụng các toạ độ x và y đã trích xuất.
- Xác minh tải trọng JSON thô của webhook dựa trên chữ ký DER đã trích xuất bằng thuật toán SHA-256.
Trạng thái người đăng ký và khả năng khôi phục
Nếu điểm cuối của người đăng ký không hoạt động hoặc trả về mã trạng thái lỗi (bất kỳ mã nào khác ngoài 204), thì Google Health API sẽ lưu trữ các thông báo đang chờ xử lý trong tối đa 7 ngày và thử lại việc gửi thông báo bằng cách tăng dần thời gian chờ.
Sau khi điểm cuối của bạn hoạt động trở lại và phản hồi bằng 204, API sẽ tự động gửi nhật ký các thông báo đã lưu trữ. Các thông báo cũ hơn 7 ngày sẽ bị loại bỏ và không thể khôi phục.
Lỗi thường gặp
| Mã lỗi | Nhắn tin | Mô tả | Nội dung đề xuất |
|---|---|---|---|
| 400 Yêu cầu không hợp lệ | Số dự án không hợp lệ trong tên tài nguyên | Khi xoá hoặc cập nhật người đăng ký bằng mã dự án trên Google Cloud trong URL yêu cầu thay vì số dự án. Điều này áp dụng cho các gói thuê bao webhook sử dụng điểm cuối projects.subscribers. |
Sử dụng số dự án trên đám mây của Google trong URL yêu cầu, chứ không phải mã dự án. |
| 403 Bị cấm | Phương thức gọi không được phép | Khi tạo hoặc liệt kê người đăng ký, hãy sử dụng mã dự án Google Cloud trong URL yêu cầu thay vì số dự án. Điều này áp dụng cho các gói thuê bao webhook sử dụng điểm cuối projects.subscribers. |
Sử dụng số dự án trên đám mây của Google trong URL yêu cầu, chứ không phải mã dự án. |