تتيح Google Health API لتطبيقك تلقّي إشعارات في الوقت الفعلي عند حدوث تغيير في بيانات الصحة الخاصة بالمستخدم. بدلاً من الاستقصاء عن التغييرات، يتلقّى الخادم طلب POST عبر HTTPS (خطاف ويب){:target="_blank" class="external"} فور توفّر البيانات في Google Health API.
أنواع البيانات المتوافقة
تتوفّر إشعارات Webhook لأنواع البيانات التالية:
- دقائق منطقة نشطة
- مستوى النشاط
- الارتفاع
- الغلوكوز في الدم
- نسبة الدهون بالجسم
- السعرات الحرارية في نطاق معدّل نبضات القلب
- تغيُّر معدّل نبضات القلب اليومي
- نطاقات معدّل نبضات القلب اليومية
- نسبة الأكسجين في الدم يوميًا
- معدّل التنفس اليومي
- معدّل النبض أثناء الراحة اليومي
- القيم المشتقة لدرجة حرارة النوم اليومية
- المسافة
- تمرين
- الطوابق
- معدّل نبضات القلب
- تغيُّر معدّل نبضات القلب
- الطول
- سجلّ شُرب الماء والسوائل
- سجلّ التغذية
- ملخّص النوم بشأن معدّل التنفس
- Run Vo2 Max
- فترة الخمول
- النوم
- الخطوات
- الوقت المستغرَق في قسم معدّل نبضات القلب
- إجمالي السعرات الحرارية
- الوزن
يتم إرسال الإشعارات لأنواع البيانات هذه فقط عندما يمنح المستخدم موافقته على أحد النطاقات التالية:
- النشاط، الذي يشمل أنواع البيانات المتعلقة بالخطوات والارتفاع والمسافة والأدوار:
https://www.googleapis.com/auth/googlehealth.activity_and_fitness.readonlyhttps://www.googleapis.com/auth/googlehealth.activity_and_fitness.writeonly
- مقاييس الصحة، التي تشمل نوع بيانات الوزن:
https://www.googleapis.com/auth/googlehealth.health_metrics_and_measurements.readonlyhttps://www.googleapis.com/auth/googlehealth.health_metrics_and_measurements.writeonly
- النوم، الذي يغطي نوع بيانات النوم:
https://www.googleapis.com/auth/googlehealth.sleep.readonlyhttps://www.googleapis.com/auth/googlehealth.sleep.writeonly
حسابات الخدمة في "إدارة الهوية وإمكانية الوصول"
على الرغم من أنّ ذلك ليس مطلوبًا، ننصحك باستخدام حساب خدمة IAM عند إعداد المشتركين في Google Health API. توفّر حسابات الخدمة أمانًا أفضل لأحمال عمل التطبيقات مقارنةً بحسابات المستخدمين العادية من خلال الميزات التالية:
- بيانات الاعتماد المبرمَجة القصيرة الأمد: عند ربط حسابات الخدمة ببيئة تنفيذ في Google Cloud (مثل Compute Engine أو Cloud Run أو Google Kubernetes Engine)، تحصل حسابات الخدمة تلقائيًا على بيانات اعتماد آمنة وقصيرة الأمد ويتم تدويرها. ويزيل ذلك مخاطر إدارة وتخزين المفاتيح الثابتة الدائمة.
- مبدأ الحدّ الأدنى من الأذونات المميّزة: توفّر حسابات الخدمة هويات مخصّصة لأحمال العمل. يمكنك منحهم الأذونات المحدّدة اللازمة لإدارة نقاط نهاية المشتركين فقط، ما يمنعهم من الوصول إلى موارد Google Cloud بشكل أوسع.
- استقلالية مراحل النشاط: تعمل حسابات الخدمة بشكل مستقل عن حساب أي مستخدم فردي، ما يضمن عدم تأثّر ثبات المصادقة على المدى الطويل بالتغييرات في الموظفين.
إعداد حساب خدمة
لضبط تطبيق المشترك للمصادقة باستخدام حساب خدمة، اتّبِع الخطوات التالية:
- إنشاء حساب خدمة: في Google Cloud Console، انتقِل إلى صفحة "إدارة الهوية وإمكانية الوصول " في مشروعك لإنشاء حساب خدمة جديد يديره المستخدم.
- منح أدوار "إدارة الهوية وإمكانية الوصول" اللازمة: امنح حساب الخدمة الأدوار المناسبة اللازمة لإدارة المشتركين في مشروعك على Google Cloud.
- ربط حساب الخدمة بعبء العمل: اضبط البيئة التي تستضيف منطق المشترك لتنفيذها بصفتها حساب الخدمة الجديد.
يتيح ذلك للرمز البرمجي لتطبيقك (مثل مكتبات برامج Google API) رصد بيانات الاعتماد القصيرة الأمد لحساب الخدمة واستخدامها تلقائيًا عند استدعاء واجهة
projects.subscribersREST API.
أدوار CPE
لإدارة المشتركين أو الاشتراكات في Google Health API، يجب منح الدور المناسب لحساب الخدمة الذي يتم انتحال هويته والذي يجري طلبات البيانات من واجهة برمجة التطبيقات. استنادًا إلى مستوى الوصول المطلوب، يمكنك تعيين أحد الأدوار التالية:
- Google Health API Read
- Google Health API Editor
- Google Health API Admin
مزيد من المعلومات عن أدوار وأذونات إدارة الهوية وإمكانية الوصول في Google Health API
إدارة المشتركين
قبل أن تتمكّن من تلقّي الإشعارات، عليك تسجيل "مشترك"، وهو يمثّل نقطة نهاية الإشعارات في تطبيقك. يمكنك إدارة المشتركين باستخدام واجهة REST API المتاحة على projects.subscribers.
يجب أن يستخدم نقطة نهاية المشترك بروتوكول HTTPS (الإصدار 1.2 من TLS أو أحدث) وأن تكون متاحة للجميع.
أثناء إنشاء المشتركين وتعديلهم، تنفِّذ Google Health API عملية التحقّق من خلال طرح سؤال للتأكّد من أنّك تملك معرّف الموارد المنتظم (URI) لنقطة النهاية. في حال تعذُّر إثبات الملكية، ستفشل عمليات إنشاء المشتركين وتعديلهم مع ظهور الخطأ FailedPreconditionException.
إنشاء مشترك
لتسجيل مشترك جديد في مشروعك، استخدِم نقطة النهاية
create. يجب تقديم ما يلي:
project-id: رقم المشروع الذي تم فيه إنشاء حساب خدمة Webhook.subscriberId: معرّف فريد تقدّمه للمشترك. يجب أن يتراوح عدد الأحرف في رقم التعريف هذا بين 4 و36 حرفًا، وأن يتطابق مع التعبير العادي ([a-z]([a-z0-9-]{2,34}[a-z0-9])).-
endpointUri: تحدّد عنوان URL المقصود لإشعارات الويب هوك. subscriberConfigs: أنواع البيانات التي تريد تلقّي إشعارات بشأنها، وسياسة الاشتراك لكل نوعendpointAuthorization: آلية التفويض لنقطة النهاية يجب أن يحتوي هذا الحقل علىsecretتقدّمه أنت. يتم إرسال قيمةsecretفي العنوانAuthorizationمع كل رسالة إشعار. يمكنك استخدام هذا الرمز المميز للتأكّد من أنّ الطلبات الواردة صادرة من Google Health API. على سبيل المثال، يمكنك ضبطsecretعلىBearer R4nd0m5tr1ng123لمصادقة Bearer، أوBasic dXNlcjpwYXNzd29yZA==لمصادقة Basic.
في subscriberConfigs، يجب ضبط subscriptionCreatePolicy لكل نوع بيانات. اضبط القيمة على AUTOMATIC لاستخدام الاشتراكات التلقائية، أو على MANUAL إذا كنت
تنوي إدارة اشتراكات المستخدمين بنفسك. يمكنك الاطّلاع على
الاشتراكات التلقائية والاشتراكات اليدوية لمعرفة المزيد من التفاصيل حول كل خيار.
طلب
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"
}
}الردّ
{
"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"
}
]
}عرض قائمة المشتركين
استخدِم نقطة النهاية list
لاسترداد جميع المشتركين المسجّلين في مشروعك.
طلب
GET https://health.googleapis.com/v4/projects/project-id/subscribers
الردّ
{
"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
}تعديل مشترك
استخدِم نقطة النهاية patch
لتعديل بيانات أحد المشتركين في مشروعك. الحقول التي يمكن تعديلها هي endpointUri وsubscriberConfigs وendpointAuthorization.
يمكنك تعديل الحقول من خلال توفير مَعلمة طلب بحث updateMask ونص الطلب. يجب أن يحتوي updateMask على قائمة قيم مفصولة بفاصلة لأسماء الحقول التي تريد تعديلها، مع استخدام تنسيق Camel Case لأسماء الحقول (على سبيل المثال، endpointUri). يجب أن يحتوي نص الطلب على عنصر مشترِك جزئي مع القيم الجديدة للحقول التي تريد تعديلها. يتم تعديل الحقول المحدّدة في updateMask فقط. إذا قدّمت حقولاً في نص الطلب غير متوفّرة في updateMask، سيتم تجاهلها.
في حال تعديل endpointUri أو endpointAuthorization، يتم إجراء عملية التحقّق من نقطة النهاية. يُرجى الاطّلاع على مقالة التحقّق من نقطة النهاية لمعرفة التفاصيل.
عند تعديل subscriberConfigs، يُرجى العِلم أنّ ذلك سيؤدي إلى استبدال كامل، وليس إلى دمج. في حال تضمين subscriberConfigs في updateMask، سيتم استبدال جميع الإعدادات المخزّنة للمشترك بالقائمة المقدَّمة في نص الطلب. لإضافة إعداد أو إزالته، يجب تقديم المجموعة الكاملة من الإعدادات. إذا كنت تعدّل حقولاً أخرى وأردت الاحتفاظ بإعداداتك الحالية، احذف subscriberConfigs من updateMask.
طلب
PATCH https://health.googleapis.com/v4/projects/project-id/subscribers/subscriber-id?updateMask=endpointUri
{
"endpointUri": "https://myapp.com/new-webhooks/health"
}الردّ
{
"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"
}
]
}حذف مشترك
استخدِم نقطة النهاية delete
لإزالة مشترك من مشروعك. بعد حذف المشترك، لن يتلقّى إشعارات بعد ذلك.
طلب
DELETE https://health.googleapis.com/v4/projects/project-id/subscribers/subscriber-id
الردّ
يتم عرض نص استجابة فارغ مع حالة HTTP `200 OK` في حال تم الحذف بنجاح.{}التحقّق من نقطة النهاية
لضمان أمان عملية إرسال الإشعارات وموثوقيتها، تنفّذ واجهة برمجة التطبيقات Google Health API عملية التحقق الإلزامي بخطوتين عند إنشاء مشترك أو تعديل إعدادات نقطة النهاية (endpointUri أو endpointAuthorization). تتم هذه العملية بشكل متزامن أثناء طلب البيانات من واجهة برمجة التطبيقات. ترسل الخدمة طلبَي POST آليَين إلى معرّف الموارد المنتظم (URI) لنقطة النهاية،
باستخدام User-Agent Google-Health-API-Webhooks-Verifier، مع نص JSON
{"type": "verification"}.
- المصافحة المصرَّح بها: يتم إرسال الطلب الأول مع عنوان
Authorizationالذي تم ضبطه. يجب أن يستجيب الخادم برمز حالة200 OKأو201 Created. - التحقّق غير المصرّح به: يتم إرسال الطلب الثاني بدون بيانات اعتماد.
يجب أن يستجيب الخادم برمز حالة
401 Unauthorizedأو403 Forbidden.
يؤكّد هذا المصافحة أنّ نقطة النهاية نشطة وتفرض الأمان بشكل صحيح. في حال تعذُّر أيّ من الخطوتَين، سيتعذّر طلب البيانات من واجهة برمجة التطبيقات مع ظهور الخطأ FAILED_PRECONDITION. ولن يتم حفظ المشترك وتفعيله لتلقّي إشعارات بيانات الصحة إلا بعد نجاح عملية المصافحة هذه.
تدوير المفتاح
إذا كنت بحاجة إلى تدوير المفاتيح لـ endpointAuthorization، اتّبِع الخطوات التالية:
- اضبط نقطة النهاية لقبول القيم القديمة والجديدة
endpointAuthorization. - عدِّل إعدادات المشترك باستخدام قيمة
endpointAuthorizationالجديدة باستخدام طلبpatchمع?updateMask=endpointAuthorization. - اضبط نقطة النهاية لقبول القيمة الجديدة
endpointAuthorizationفقط بعد التأكّد من نجاح الخطوة 2.
اشتراكات المستخدم
تساعدك واجهة برمجة التطبيقات Google Health API في إدارة اشتراكات المستخدمين بكفاءة، ما يقلّل من الحاجة إلى التسجيل اليدوي أثناء إعداد المستخدم.
الاشتراكات التلقائية
ننصح باستخدام الاشتراكات التلقائية. لتفعيل هذه الميزة، اضبط قيمة
subscriptionCreatePolicy على AUTOMATIC في subscriberConfigs لأنواع البيانات المحدّدة. إنّ dataTypes الذي تحدّده باستخدام سياسة AUTOMATIC هو نفسه أنواع البيانات التي ترسل Google Health API إشعارات بشأنها، شرط أن يوافق المستخدم أيضًا على أنواع البيانات هذه.
عندما يمنح المستخدم موافقة التطبيق لنطاقات تتوافق مع أنواع البيانات التي تتضمّن سياسة AUTOMATIC، تتتبّع Google Health API تلقائيًا أنواع البيانات الناتجة عن التقاطع بين أنواع البيانات التي يمكن جمعها بموافقة المستخدم وأنواع البيانات التلقائية لإعدادات المشترك لهذا المستخدم، وترسل إشعارات بشأنها. بعد ذلك، يتم إرسال الإشعارات إلى نقطة النهاية
كلما أنشأ هذا المستخدم بيانات جديدة لهذه الأنواع. ويعمل ذلك مع المستخدمين الذين يمنحون الموافقة قبل إنشاء المشترك أو بعده. لا تتم إعادة ملء الإشعارات بالبيانات التي تم إنشاؤها قبل إنشاء المشترك.
إذا ألغى المستخدم موافقته، ستتوقف الإشعارات الخاصة بأنواع البيانات المعنية. تتولّى Google إدارة الاشتراكات التلقائية، ولا يمكن إدراجها أو حذفها بشكل فردي، بل تتم إزالتها فقط عند حذف حساب المشترك الرئيسي.
الاشتراكات اليدوية
إذا تم ضبط المشترك على MANUAL subscription_create_policy
لأنواع بيانات معيّنة، عليك إنشاء الاشتراكات وإدارتها بشكل صريح
لكل مستخدم. يربط الاشتراك مستخدمًا معيّنًا بنقطة نهاية المشترك
لمجموعة محدّدة من أنواع البيانات. يمكن للمطوّرين استخدام واجهات برمجة تطبيقات معيّنة لإجراء ما يلي:
- إنشاء اشتراكات (يدويًا) لكل
healthUserId: لإنشاء اشتراك جديد لمستخدم معيّن. تتطلّب هذه الطريقة أن يضبط المشتركSubscriptionCreatePolicyعلىMANUALلأنواع البيانات المطلوبة. - تعديل الاشتراك (يدويًا): تعديل أنواع البيانات لاشتراك مستخدم حالي.
- حذف الاشتراك (يدويًا): يؤدي إلى حذف اشتراك مستخدم معيّن. بعد حذف نقطة النهاية للمشترك، لن تتلقّى بعد ذلك إشعارات بشأن هذا المستخدم لأنواع البيانات المرتبطة.
- قائمة الاشتراكات (اليدوية): تعرض هذه القائمة جميع الاشتراكات النشطة لمشترك معيّن. يمكنك فلترة النتائج حسب المستخدم أو نوع البيانات.
الإشعارات
عندما تتغيّر بيانات المستخدم لنوع بيانات تم الاشتراك فيه، ترسل Google Health API طلب HTTPS POST إلى عنوان URL لنقطة نهاية المشترك.
تنسيق الإشعار
حمولة الإشعار هي عنصر JSON يحتوي على تفاصيل حول تغيير البيانات. ويشمل ذلك معرّف المستخدم ونوع البيانات والفواصل الزمنية التي يمكنك استخدامها للاستعلام عن البيانات المعدَّلة.
{
"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"
}
}
]
}
}
يشير الحقل operation إلى نوع التغيير الذي أدّى إلى إرسال الإشعار:
UPSERT: يتم إرسالها عند إضافة أي بيانات أو تعديلها.-
DELETE: يتم إرسال هذا الحدث عندما يحذف المستخدم البيانات.
ننصحك بجعل منطق معالجة الإشعارات غير قابل للتكرار، خاصةً بالنسبة إلى عمليات UPSERT، لأنّ عمليات إعادة المحاولة يمكن أن تؤدي إلى إرسال إشعارات مكرّرة.
الحقل clientProvidedSubscriptionName هو معرّف فريد. بالنسبة إلى الاشتراكات التي تتضمّن سياسة MANUAL، يحتوي هذا الحقل على اسم الاشتراك الدائم الذي يقدّمه المطوّر والذي تم تحديده عند إنشاء الاشتراك.
يوفّر ذلك معرّفًا ثابتًا لإدارة الاشتراكات اليدوية. بالنسبة إلى الاشتراكات التي تم إنشاؤها باستخدام سياسة AUTOMATIC، تنشئ Google Health API تلقائيًا معرّفًا فريدًا (رقم تعريف فريد عشوائي) وتخصّصه لهذا الحقل لكل إشعار. يضمن تضمين clientProvidedSubscriptionName لكل من السياسات اليدوية والتلقائية تنسيقًا متسقًا لحِزمة بيانات الإشعارات في جميع أنواع الاشتراكات.
healthUserId هو معرّف Google Health API للمستخدم الذي تم تغيير بياناته. إذا كان تطبيقك يتيح استخدام حسابات متعددة، قد تتلقّى إشعارات لأي مستخدم منح تطبيقك موافقته. عند تلقّي إشعار، استخدِم healthUserId لتحديد بيانات المستخدم التي تم تغييرها، حتى تتمكّن من استخدام بيانات اعتماد OAuth الخاصة به للاستعلام عن بياناته.
لربط بيانات اعتماد OAuth الخاصة بالمستخدم بحسابه على healthUserId، استخدِم نقطة النهاية
getIdentity. يمكنك طلب نقطة النهاية هذه باستخدام بيانات اعتماد المستخدم أثناء عملية إعداد المستخدم لاسترداد healthUserId وتخزين عملية الربط هذه. لا تتغيّر عملية الربط هذه بمرور الوقت، لذا يمكن تخزينها مؤقتًا إلى أجل غير مسمى. للاطّلاع على مثال، يُرجى الرجوع إلى الحصول على رقم تعريف المستخدم. يتيح لك ذلك اختيار بيانات اعتماد المستخدم الصحيحة عند طلب البيانات استنادًا إلى healthUserId في أحد الإشعارات.
الردّ على إشعار
يجب أن يستجيب الخادم للإشعارات برمز الحالة HTTP 204 No Content على الفور. لتجنُّب انتهاء المهلة، عالِج حمولة الإشعار بشكل غير متزامن بعد إرسال الرد. إذا تلقّت واجهة برمجة التطبيقات Google Health API أي رمز حالة آخر أو انتهت مهلة الطلب، ستعيد محاولة إرسال الإشعار لاحقًا.
مثال على 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
});
});
التحقّق من التوقيع
لضمان صحة إشعارات Webhooks، يتم توقيع حمولة JSON الأولية لكل إشعار Webhook صادر باستخدام مفتاح خاص باستخدام PublicKeySign في Tink، ما يوفّر التوقيع المرمّز بترميز Base64 في عنوان HTTP GOOGLE-HEALTH-API-SIGNATURE في الطلب. يتم تغيير مفاتيح التوقيع هذه تلقائيًا كل 30 يومًا، ويتم توزيع مجموعة المفاتيح العامة الرسمية المقابلة كملف JSON على عنوان URL الدائم https://www.gstatic.com/googlehealthapi/webhooks/webhooks_public_keyset.json.
كيفية التحقّق من صحة التوقيع
استخدام Tink (يُنصح به): يمكن للمطوّرين التحقّق من التوقيع باستخدام العنصر الأساسي
PublicKeyVerify
في Tink. احصل على مجموعة المفاتيح العامة من عنوان URL الدائم، وأنشئ عنصرًا بدائيًا من PublicKeyVerify باستخدام مجموعة المفاتيح، وتحقّق من صحة عنوان GOOGLE-HEALTH-API-SIGNATURE الذي تم فك ترميزه مقارنةً بحِمل JSON الخام الخاص بخطاف الويب.
إثبات صحة التوقيع يدويًا (بدون Tink): إذا اختار المطوّرون عدم استخدام Tink، يمكنهم إثبات صحة التوقيع يدويًا باتّباع الخطوات التالية:
- يتم فك ترميز عنوان
GOOGLE-HEALTH-API-SIGNATUREباستخدام Base64 لفصل بادئة Tink المكوّنة من 5 بايت (التي تحتوي على بادئة إصدار مكوّنة من بايت واحد وkeyId مكوّن من 4 بايت) عن التوقيع الفعلي بترميز DER. - استرجِع مجموعة مفاتيح JSON من https://www.gstatic.com/googlehealthapi/webhooks/webhooks_public_keyset.json.
- ابحث عن المفتاح المطابق لـ keyId الذي تم تحليله، وفكِّ ترميز حقل القيمة باستخدام Base64، والذي يحتوي على EcdsaPublicKey Protocol Buffer متسلسل.
- استخرِج إحداثيات x وy ذات الترتيب الكبير (علامات Protobuf 3 و4) من حمولة البيانات الثنائية هذه.
- أنشئ مفتاحًا عامًا عاديًا من نوع ECDSA P-256 في مكتبة تشفير مضمّنة باستخدام إحداثيات x وy المستخرَجة.
- تحقَّق من صحة حمولة JSON الأولية الخاصة بخطاف الويب مقارنةً بتوقيع DER الذي تم استخراجه باستخدام خوارزمية SHA-256.
حالة الاشتراك واسترداده
إذا أصبح عنوان URL لنقطة النهاية الخاصة بالمشترك غير متاح أو عرض رمز حالة خطأ (أي رمز آخر غير 204)، سيخزِّن Google Health API الإشعارات المعلقة لمدة تصل إلى 7 أيام وسيعيد محاولة تسليمها باستخدام التراجع الأسي.
بعد أن يعود الجهاز إلى الاتصال بالإنترنت ويستجيب بالرمز 204، ستسلّم واجهة برمجة التطبيقات تلقائيًا الرسائل المتراكمة المخزّنة. يتم تجاهل الإشعارات التي مرّ عليها أكثر من 7 أيام ولا يمكن استردادها.
الأخطاء الشائعة
| رمز الخطأ | رسالة | الوصف | الاقتراح |
|---|---|---|---|
| 400 طلب غير صالح | رقم المشروع غير صالح في اسم المورد | عند حذف مشترك أو تعديله باستخدام رقم تعريف مشروعك على Google Cloud في عنوان URL للطلب بدلاً من رقم المشروع ينطبق ذلك على الاشتراكات في خطافات الويب باستخدام نقطة النهاية projects.subscribers. |
استخدِم رقم مشروع Google Cloud في عنوان URL للطلب، وليس رقم تعريف المشروع. |
| 403 Forbidden | ليس لدى المتصل إذن | عند إنشاء مشتركين أو إدراجهم باستخدام رقم تعريف مشروعك على Google Cloud في عنوان URL للطلب بدلاً من رقم المشروع ينطبق ذلك على الاشتراكات في خطافات الويب باستخدام نقطة النهاية projects.subscribers. |
استخدِم رقم مشروع Google Cloud في عنوان URL للطلب، وليس رقم تعريف المشروع. |