درخواست همگام سازی

درخواست همگام‌سازی، یک درخواست همگام‌سازی SYNC را برای هر کاربر گوگل که دستگاه‌هایی با agentUserId مشخص‌شده مرتبط با خود (که شما در درخواست SYNC اصلی ارسال کرده‌اید) دارد، فعال می‌کند. این به شما امکان می‌دهد دستگاه‌های کاربران را بدون قطع و وصل مجدد حسابشان به‌روزرسانی کنید. همه کاربرانی که به این شناسه متصل هستند، یک درخواست SYNC دریافت خواهند کرد.

شما باید یک درخواست SYNC ایجاد کنید:

  • اگر کاربر دستگاه جدیدی اضافه کند.
  • اگر کاربر دستگاه موجود را حذف کند.
  • اگر کاربر نام یک دستگاه موجود را تغییر دهد.
  • اگر نوع یا ویژگی جدیدی از دستگاه را پیاده‌سازی می‌کنید یا ویژگی جدیدی به دستگاه اضافه می‌کنید.

شروع کنید

برای پیاده‌سازی همگام‌سازی درخواست، مراحل زیر را دنبال کنید:

فعال کردن API گوگل هوم‌گراف

  1. در Google Cloud Console ، به صفحه HomeGraph API بروید.

    به صفحه HomeGraph API بروید
  2. پروژه‌ای را انتخاب کنید که با شناسه پروژه smart home شما مطابقت داشته باشد.
  3. روی فعال کردن (ENABLE) کلیک کنید.

ایجاد کلید حساب سرویس

برای تولید کلید حساب سرویس از Google Cloud Console این دستورالعمل‌ها را دنبال کنید:

توجه : هنگام انجام این مراحل، مطمئن شوید که از پروژه GCP صحیح استفاده می‌کنید. این پروژه‌ای است که با شناسه پروژه smart home شما مطابقت دارد.
  1. در Google Cloud Console ، به صفحه حساب‌های سرویس بروید.

    به صفحه حساب‌های سرویس بروید .

    ممکن است لازم باشد قبل از اینکه به صفحه حساب‌های سرویس هدایت شوید، یک پروژه را انتخاب کنید.

  2. روی کلیک کنید. ایجاد حساب کاربری سرویس .

  3. در قسمت نام حساب سرویس ، یک نام وارد کنید.

  4. در قسمت شناسه حساب سرویس ، یک شناسه وارد کنید.

  5. در قسمت توضیحات حساب سرویس ، توضیحی وارد کنید.

  6. روی ایجاد کلیک کنید و ادامه دهید .

  7. از منوی کشویی نقش ، حساب‌های سرویس > حساب سرویس OpenID Connect Identity Token Creator را انتخاب کنید.

  8. روی ادامه کلیک کنید.

  9. روی انجام شد کلیک کنید.

  10. حساب سرویسی که ایجاد کرده‌اید را از فهرست حساب‌های سرویس انتخاب کنید و از منوی Actions گزینه Manage keys را انتخاب کنید.

  11. افزودن کلید > ایجاد کلید جدید را انتخاب کنید.

  12. برای نوع کلید ، گزینه JSON را انتخاب کنید.

  13. روی «ایجاد» کلیک کنید. یک فایل JSON که حاوی کلیدهای دانلود شده روی رایانه شماست.

برای دستورالعمل‌ها و اطلاعات دقیق در مورد ایجاد کلیدهای حساب سرویس، به بخش ایجاد و حذف کلیدهای حساب سرویس در سایت راهنمای کنسول ابری گوگل مراجعه کنید.

فراخوانی API

اچ‌تی‌پی

رابط برنامه‌نویسی کاربردی Home Graph یک نقطه پایانی HTTP ارائه می‌دهد.

  1. از فایل JSON حساب سرویس دانلود شده برای ایجاد یک JSON Web Token (JWT) استفاده کنید. برای اطلاعات بیشتر، به بخش احراز هویت با استفاده از حساب سرویس مراجعه کنید.
  2. با استفاده از oauth2l، یک توکن دسترسی OAuth 2.0 با دامنه https://www.googleapis.com/auth/homegraph دریافت کنید:
  3. oauth2l fetch --credentials service-account.json \
      --scope https://www.googleapis.com/auth/homegraph
    
  4. درخواست JSON را با agentUserId ایجاد کنید. در اینجا یک نمونه درخواست JSON برای Request Sync آورده شده است:
  5. {
      "agentUserId": "user-123"
    }
  6. درخواست همگام‌سازی JSON و توکن موجود در درخواست HTTP POST خود را به نقطه پایانی Google Home Graph ترکیب کنید. در اینجا مثالی از نحوه ارسال درخواست در خط فرمان با استفاده از curl به عنوان آزمایش آورده شده است:
  7. curl -X POST -H "Authorization: Bearer ACCESS_TOKEN" \
      -H "Content-Type: application/json" \
      -d @request-body.json \
      "https://homegraph.googleapis.com/v1/devices:requestSync"
    

gRPC

رابط برنامه‌نویسی کاربردی Home Graph یک نقطه پایانی gRPC ارائه می‌دهد.

  1. تعریف سرویس بافرهای پروتکل را برای رابط برنامه‌نویسی کاربردی Home Graph دریافت کنید.
  2. برای تولید استاب‌های کلاینت برای یکی از زبان‌های پشتیبانی‌شده، مستندات توسعه‌دهنده‌ی gRPC را دنبال کنید.
  3. متد RequestSync را فراخوانی کنید.

نود جی اس

کلاینت Node.js مربوط به APIهای گوگل، اتصالاتی را برای Home Graph API فراهم می‌کند.

  1. سرویس google.homegraph را با استفاده از Application Default Credentials راه‌اندازی کنید.
  2. متد requestSync را با RequestSyncDevicesRequest فراخوانی کنید. این متد یک Promise با RequestSyncDevicesResponse خالی برمی‌گرداند.
const homegraphClient = homegraph({
  version: 'v1',
  auth: new GoogleAuth({
    scopes: 'https://www.googleapis.com/auth/homegraph'
  })
});

const res = await homegraphClient.devices.requestSync({
  requestBody: {
    agentUserId: 'PLACEHOLDER-USER-ID',
    async: false
  }
});
    

جاوا

کتابخانه کلاینت HomeGraph API برای جاوا، اتصالاتی را برای Home Graph API فراهم می‌کند.

  1. HomeGraphApiService را با استفاده از Application Default Credentials مقداردهی اولیه کنید.
  2. متد requestSync را با RequestSyncDevicesRequest فراخوانی کنید. این متد یک ReportStateAndNotificationResponse خالی برمی‌گرداند.
// Get Application Default credentials.
GoogleCredentials credentials =
    GoogleCredentials.getApplicationDefault()
        .createScoped(List.of("https://www.googleapis.com/auth/homegraph"));

// Create Home Graph service client.
HomeGraphService homegraphService =
    new HomeGraphService.Builder(
            GoogleNetHttpTransport.newTrustedTransport(),
            GsonFactory.getDefaultInstance(),
            new HttpCredentialsAdapter(credentials))
        .setApplicationName("HomeGraphExample/1.0")
        .build();

// Request sync.
RequestSyncDevicesRequest request =
    new RequestSyncDevicesRequest().setAgentUserId("PLACEHOLDER-USER-ID").setAsync(false);
homegraphService.devices().requestSync(request);
    

پاسخ‌های خطا

ممکن است هنگام فراخوانی درخواست همگام‌سازی، یکی از پاسخ‌های خطای زیر را دریافت کنید. این پاسخ‌ها به صورت کدهای وضعیت HTTP هستند.

  • 400 Bad Request - سرور به دلیل سینتکس نامعتبر قادر به پردازش درخواست ارسال شده توسط کلاینت نبوده است. دلایل رایج شامل JSON ناقص یا استفاده از null به جای "" برای یک مقدار رشته‌ای است.
  • 403 Forbidden - سرور به دلیل خطایی هنگام به‌روزرسانی توکن، قادر به پردازش درخواست agentUserId داده شده نبود. مطمئن شوید که نقطه پایانی OAuth شما به درستی به درخواست‌های به‌روزرسانی توکن پاسخ می‌دهد و وضعیت اتصال حساب کاربر را بررسی کنید.
  • 404 Not Found - منبع درخواستی یافت نشد اما ممکن است در آینده در دسترس باشد. معمولاً این بدان معناست که حساب کاربری به گوگل متصل نیست یا ما یک agentUserId نامعتبر دریافت کرده‌ایم. اطمینان حاصل کنید که agentUserId با مقدار ارائه شده در پاسخ SYNC شما مطابقت دارد و شما به درستی اهداف DISCONNECT را مدیریت می‌کنید.
  • 429 Too Many Requests - حداکثر تعداد درخواست‌های همگام‌سازی همزمان برای agentUserId داده شده، از حد مجاز فراتر رفته است. یک تماس‌گیرنده فقط می‌تواند یک درخواست همگام‌سازی همزمان صادر کند، مگر اینکه پرچم async روی true تنظیم شده باشد.