احراز هویت پلتفرم برای بازی های اندروید

برای دسترسی به عملکرد خدمات Google Play Games، بازی شما باید حساب بازیکن تأیید شده را ارائه کند. این مستندات نحوه پیاده سازی یک تجربه احراز هویت یکپارچه را در بازی خود شرح می دهد.

Play Games Services v2 SDK تعدادی پیشرفت را به ارمغان می‌آورد که تعداد کاربرانی که در بازی شما احراز هویت می‌شوند را افزایش می‌دهد و توسعه را آسان‌تر می‌کند:

  • بهبود برای کاربران:
    • پس از انتخاب یک حساب پیش فرض، کاربران بدون نیاز به تعامل با یک اعلان احراز هویت می شوند.
    • کاربران دیگر نیازی به دانلود برنامه بازی‌های Play برای احراز هویت با خدمات بازی‌های Play یا ایجاد حساب جدید ندارند.
    • کاربران اکنون می توانند حساب های خدمات بازی های Play خود را برای چندین بازی از یک صفحه مدیریت کنند.
  • بهبود برای توسعه دهندگان:
  • کد کلاینت دیگر نیازی به رسیدگی به جریان احراز هویت یا خروج از سیستم ندارد، زیرا ورود به سیستم به طور خودکار هنگام شروع بازی فعال می شود و مدیریت حساب در تنظیمات سیستم عامل انجام می شود.

ادغام مشتری جدید

این بخش نحوه ادغام کلاینت جدید با Play Games Services Sign In v2 را نشان می دهد.

وابستگی را اضافه کنید

وابستگی Play Game Services SDK را به فایل build.gradle در سطح ریشه برنامه خود اضافه کنید. اگر از Gradle استفاده می کنید، می توانید وابستگی را به صورت زیر اضافه یا به روز کنید:

dependencies {
 implementation "com.google.android.gms:play-services-games-v2:+"
}

شناسه پروژه را تعریف کنید

برای افزودن شناسه پروژه SDK خدمات Play Games به برنامه خود، مراحل زیر را انجام دهید:

  1. در فایل AndroidManifest.xml برنامه خود، عنصر <meta-data> و ویژگی های زیر را به عنصر <application> اضافه کنید:

    <manifest>
      <application>
        <meta-data android:name="com.google.android.gms.games.APP_ID"
                   android:value="@string/game_services_project_id"/>
      </application>
    </manifest>
    

    مرجع منبع رشته @string/game_services_project_id را با استفاده از شناسه پروژه خدمات بازی بازی های خود به عنوان مقدار تعریف کنید. شناسه پروژه خدمات بازی شما را می‌توانید در زیر نام بازی خود در صفحه پیکربندی در کنسول Google Play پیدا کنید.

  2. در فایل res/values/strings.xml یک مرجع منبع رشته اضافه کنید و ID پروژه خود را به عنوان مقدار تنظیم کنید. در کنسول Google Play، می‌توانید ID پروژه خود را زیر نام بازی خود در صفحه پیکربندی پیدا کنید. به عنوان مثال:

    <!-- res/values/strings.xml -->
    <resources>
      <!-- Replace 0000000000 with your game’s project id. Example value shown above.  -->
      <string translatable="false"  name="game_services_project_id"> 0000000000 </string>
    </resources>
    

SDK را راه اندازی کنید

Play Games SDK را در پاسخ به تماس onCreate(..) کلاس Application خود راه اندازی کنید.

import com.google.android.gms.games.PlayGamesSdk;

...

@Override
public void onCreate(){
  super.onCreate();
  PlayGamesSdk.initialize(this);
}

نتیجه احراز هویت را دریافت کنید

هنگامی که بازی شما راه اندازی می شود، همیشه سعی می کند تا کاربر را احراز هویت کند. برای احراز هویت کاربر، باید تأیید کنید که کاربر با موفقیت احراز هویت شده است و سپس شناسه پخش کننده او را دریافت کنید.

برای تأیید تلاش برای احراز هویت، با GamesSignInClient.isAuthenticated() تماس بگیرید و از addOnCompleteListener برای بازیابی نتایج استفاده کنید. به عنوان مثال:

GamesSignInClient gamesSignInClient = PlayGames.getGamesSignInClient(getActivity());

gamesSignInClient.isAuthenticated().addOnCompleteListener(isAuthenticatedTask -> {
  boolean isAuthenticated =
    (isAuthenticatedTask.isSuccessful() &&
     isAuthenticatedTask.getResult().isAuthenticated());

  if (isAuthenticated) {
    // Continue with Play Games Services
  } else {
    // Show a sign-in button to ask players to authenticate. Clicking it should
    // call GamesSignInClient.signIn().
  }
});

اگر کاربر تصمیم گرفت هنگام راه‌اندازی بازی احراز هویت نشود، توصیه می‌شود همچنان دکمه‌ای را با نماد بازی‌های Play نشان دهید یا صفحه ورود به سیستم را به کاربر ارائه دهید که دکمه‌ای با نماد بازی‌های Play به‌عنوان یکی از گزینه‌های احراز هویت دارد و اگر کاربر دکمه GamesSignInClient.signIn() مجدداً کاربر را احراز هویت کنید. پس از تأیید احراز هویت کاربر، می توانید شناسه پخش کننده را برای شناسایی کاربر بازیابی کنید. به عنوان مثال:

PlayGames.getPlayersClient(activity).getCurrentPlayer().addOnCompleteListener(mTask -> {
    // Get PlayerID with mTask.getResult().getPlayerId()
  }
);