از ARCore API در Google Cloud استفاده کنید

انتخاب پلت فرم:

ویژگی‌های ARCore مانند Geospatial API و Cloud Anchors از ARCore API میزبانی شده در Google Cloud استفاده می‌کنند. هنگام استفاده از این ویژگی ها، برنامه شما از اعتبارنامه ها برای دسترسی به سرویس ARCore API استفاده می کند.

این شروع سریع نحوه تنظیم برنامه خود را به گونه ای که بتواند با سرویس ARCore API میزبانی شده در Google Cloud ارتباط برقرار کند، توضیح می دهد.

یک پروژه Google Cloud جدید ایجاد کنید یا از یک پروژه موجود استفاده کنید

اگر پروژه موجودی دارید، آن را انتخاب کنید.

به انتخابگر پروژه بروید

اگر پروژه Google Cloud موجود ندارید، آن را ایجاد کنید.

پروژه جدید ایجاد کنید

ARCore API را فعال کنید

برای استفاده از ARCore API، باید آن را در پروژه خود فعال کنید.

ARCore API را فعال کنید

یک روش مجوز تنظیم کنید

یک برنامه Unity می تواند با استفاده از دو روش مختلف مجوز با ARCore API ارتباط برقرار کند: مجوز بدون کلید، که روش توصیه شده است، و مجوز کلید API:

  • در اندروید، مجوز بدون کلید از ترکیبی از نام بسته برنامه و اثر انگشت کلید امضا برای تأیید برنامه شما استفاده می‌کند.

    در iOS، مجوز Keyless از یک نشانه امضا شده برای کنترل دسترسی به API استفاده می کند. این روش به سروری نیاز دارد که متعلق به شما باشد تا توکن‌ها را امضا کند و دسترسی به API را کنترل کند.

  • کلید API رشته‌ای است که پروژه Google Cloud را شناسایی می‌کند. کلیدهای API معمولاً ایمن در نظر گرفته نمی شوند زیرا معمولاً برای مشتریان قابل دسترسی هستند. استفاده از مجوز Keyless را برای برقراری ارتباط با ARCore API در نظر بگیرید.

بدون کلید

برای مجوز دادن به برنامه خود با استفاده از احراز هویت بدون کلید ، شناسه مشتری OAuth 2.0 ایجاد کنید.

امضای اثر انگشت کلیدی را تعیین کنید

شناسه مشتری OAuth 2.0 از اثر انگشت کلید امضای برنامه شما برای شناسایی برنامه شما استفاده می کند.

چگونه اثر انگشت امضای اشکال زدایی خود را بدست آوریم

هنگام اجرا یا اشکال زدایی پروژه، ابزارهای Android SDK به طور خودکار برنامه شما را با یک گواهی اشکال زدایی تولید شده امضا می کنند.

از دستور زیر برای دریافت اثر انگشت گواهی اشکال زدایی استفاده کنید.

مک/لینوکس
keytool -list -v -alias androiddebugkey -keystore ~/.android/debug.keystore
پنجره ها
keytool -list -v -alias androiddebugkey -keystore %USERPROFILE%\.android\debug.keystore

ابزار keytool از شما می خواهد که یک رمز عبور برای keystore وارد کنید. رمز عبور پیش فرض برای دیباگ کیستور android است. ابزار keytool سپس اثر انگشت را در ترمینال چاپ می کند. مثلا:

   Certificate fingerprint: SHA1: <strong>DA:39:A3:EE:5E:6B:4B:0D:32:55:BF:EF:95:60:18:90:AF:D8:07:09

نحوه دریافت اثر انگشت امضا از فروشگاه کلید

اگر فایل فروشگاه کلید دارید، از ابزار keytool برای تعیین اثر انگشت استفاده کنید.

keytool -list -v -alias your-key-name -keystore path-to-production-keystore

ابزار keytool سپس اثر انگشت را در ترمینال چاپ می کند. مثلا:

   Certificate fingerprint: SHA1: DA:39:A3:EE:5E:6B:4B:0D:32:55:BF:EF:95:60:18:90:AF:D8:07:09

چگونه کلید امضای برنامه خود را از Play App Signing دریافت کنید

هنگام استفاده از Play App Signing ، Google کلید امضای برنامه شما را مدیریت می کند و از آن برای امضای فایل های APK شما استفاده می کند. این کلید باید برای اثر انگشت امضا استفاده شود.

  1. در صفحه امضای برنامه در کنسول Google Play، به گواهی کلید امضای برنامه بروید.
  2. از اثر انگشت گواهی SHA-1 استفاده کنید.

شناسه های مشتری OAuth 2.0 ایجاد کنید

برای هر کلید امضای قابل اجرا از مراحل قبلی، یک شناسه مشتری OAuth 2.0 در اعتبار پروژه Google Cloud خود ایجاد کنید.

  • در Google Cloud، صفحه Credentials را باز کنید.

    اعتبارنامه

  • روی Create credentials کلیک کنید، سپس OAuth client ID را از منو انتخاب کنید.

  • فیلدهای مورد نیاز را به صورت زیر پر کنید:

    • نوع برنامه : اندروید را انتخاب کنید.
    • نام بسته : از نام بسته همانطور که در AndroidManifest.xml خود اعلام شده است استفاده کنید.
    • اثر انگشت گواهی SHA-1 : از اثر انگشتی که در مراحل قبلی به دست آمده است استفاده کنید.
  • ایجاد را فشار دهید.

شامل کتابخانه های مورد نیاز

  1. com.google.android.gms:play-services-auth:16+ در وابستگی های برنامه خود قرار دهید.
  2. اگر از کد کوچک سازی استفاده می کنید، آن را به فایل build.gradle برنامه خود اضافه کنید:

    buildTypes {
      release {
        ...
        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
      }
    }
    
  3. موارد زیر را به فایل proguard-rules.pro برنامه خود اضافه کنید:

    -keep class com.google.android.gms.common.** { *; }
    -keep class com.google.android.gms.location.** { *; }
    -keep class com.google.android.gms.auth.** { *; }
    -keep class com.google.android.gms.tasks.** { *; }
    

اکنون برنامه شما برای استفاده از احراز هویت بدون کلید پیکربندی شده است.

بدون کلید

ARCore از مجوز تماس‌های API در iOS با استفاده از یک ( JSON Web Token ) پشتیبانی می‌کند. رمز باید توسط حساب Google Service امضا شده باشد.

برای ایجاد توکن برای iOS، باید یک نقطه پایانی در سرور خود داشته باشید که شرایط زیر را برآورده کند:

  • مکانیسم مجوز خود شما باید از نقطه پایانی محافظت کند.

  • نقطه پایانی باید هر بار یک توکن جدید تولید کند، به این صورت که:

    • هر کاربر یک توکن منحصر به فرد دریافت می کند.
    • توکن ها فورا منقضی نمی شوند.

یک حساب سرویس و کلید امضا ایجاد کنید

برای ایجاد حساب سرویس Google و کلید امضا، مراحل زیر را دنبال کنید:

  1. در Google Cloud، صفحه Credentials را باز کنید.
    اعتبارنامه
  2. روی ایجاد اعتبارنامه > حساب سرویس کلیک کنید.
  3. در بخش جزئیات حساب سرویس ، یک نام برای حساب جدید تایپ کنید، سپس روی ایجاد کلیک کنید.
  4. در صفحه مجوزهای حساب سرویس، به منوی کشویی Select a role بروید. حساب‌های خدمات > ایجاد کننده رمز حساب حساب را انتخاب کنید، سپس روی ادامه کلیک کنید.
  5. در صفحه Grant users access to this service account page، روی Done کلیک کنید.
  6. در صفحه Credentials ، بخش Service Accounts را پیدا کنید و روی نام حسابی که ایجاد کرده اید کلیک کنید.
  7. در صفحه جزئیات حساب سرویس ، به بخش کلیدها بروید و افزودن کلید > ایجاد کلید جدید را انتخاب کنید.
  8. JSON را به عنوان نوع کلید انتخاب کنید و روی Create کلیک کنید.

    این یک فایل JSON حاوی کلید خصوصی دستگاه شما را دانلود می کند. فایل کلید JSON دانلود شده را در مکانی امن ذخیره کنید.

روی سرور خود توکن ایجاد کنید

برای ایجاد نشانه های جدید (JWT) در سرور خود، از کتابخانه های استاندارد JWT و فایل JSON که به طور ایمن از حساب سرویس جدید خود دانلود کرده اید استفاده کنید.

توکن ها را در ماشین توسعه خود ایجاد کنید

برای تولید JWT در ماشین توسعه خود، از دستور oauth2l زیر استفاده کنید:

oauth2l fetch --cache "" --jwt --json $KEYFILE --audience "https://arcore.googleapis.com/"

تعیین یک مکان خالی کش با استفاده از پرچم --cache برای اطمینان از اینکه هر بار یک توکن متفاوت تولید می شود ضروری است. حتما رشته حاصل را کوتاه کنید. فاصله های اضافی یا نویسه های خط جدید باعث می شود API رمز را رد کند .

توکن را امضا کنید

برای امضای JWT باید از الگوریتم RS256 و ادعاهای زیر استفاده کنید:

  • iss - آدرس ایمیل حساب سرویس.
  • sub - آدرس ایمیل حساب سرویس.
  • iat - زمان یونیکس که توکن تولید شد، در ثانیه.
  • exp - iat + 3600 (1 ساعت). زمان یونیکس زمانی که توکن منقضی می شود، در ثانیه.
  • aud - مخاطب. باید روی https://arcore.googleapis.com/ تنظیم شود.

ادعاهای غیر استاندارد در بار JWT مورد نیاز نیست، اگرچه ممکن است ادعای uid برای شناسایی کاربر مربوطه مفید باشد.

اگر از روش متفاوتی برای تولید JWT های خود استفاده می کنید، مانند استفاده از Google API در یک محیط مدیریت شده توسط Google، حتما JWT های خود را با ادعاهای موجود در این بخش امضا کنید. مهمتر از همه، مطمئن شوید که مخاطب درست است.

رمز را در جلسه ARCore پاس کنید

  1. مطمئن شوید که استراتژی تأیید اعتبار iOS روی AuthenticationToken تنظیم شده است. در Unity، به Edit > Project Settings > XR Plug-in Management > ARCore Extensions بروید. در منوی کشویی iOS Authentication Strategy ، گزینه Authentication Token را انتخاب کنید.
  2. هنگامی که یک توکن دریافت می کنید، آن را با استفاده از ARAnchorManager.SetAuthToken() به جلسه ARCore ارسال کنید:

    // Designate the token to authorize ARCore API calls
    // on the iOS platform. This should be called each time the application's token is refreshed.
    ARAnchorManager.SetAuthToken(authToken);
    

اکنون برنامه شما برای استفاده از احراز هویت بدون کلید پیکربندی شده است.

هنگام ارسال توکن به جلسه به موارد زیر توجه کنید:

  • اگر از یک کلید API برای ایجاد جلسه استفاده کرده اید، ARCore توکن را نادیده می گیرد و یک خطا را ثبت می کند.

    اگر دیگر به کلید API نیاز ندارید، آن را در Google Developers Console حذف کرده و از برنامه خود حذف کنید.

  • ARCore توکن هایی که حاوی فاصله یا کاراکترهای خاص هستند را نادیده می گیرد.

  • توکن ها معمولا پس از یک ساعت منقضی می شوند. اگر این احتمال وجود دارد که توکن شما در حین استفاده منقضی شود، یک توکن جدید تهیه کنید و آن را به API ارسال کنید.

کلید ای پی ای

  1. در Google Cloud، صفحه اعتبارنامه را باز کنید.
    اعتبارنامه
  2. روی Create credentials کلیک کنید، سپس کلید API را از منو انتخاب کنید.
    گفتگوی ایجاد شده کلید API رشته کلید تازه ایجاد شده شما را نمایش می دهد.
  3. در Unity، به Edit > Project Settings > XR Plug-in Management > ARCore Extensions بروید. برای هر پلتفرم هدف (اندروید، iOS)، در منوی کشویی استراتژی احراز هویت ، گزینه API Key را انتخاب کنید. سپس، کلید API خود را در فیلدهای کلید API وارد کنید.

  4. اسناد مربوط به محدودیت های کلید API را برای ایمن کردن کلید API خود مرور کنید.

اکنون برنامه شما برای استفاده از کلیدهای API پیکربندی شده است.

بعدش چی

با پیکربندی مجوز، ویژگی‌های ARCore زیر را که از آن استفاده می‌کنند، بررسی کنید: