با استفاده از رمزهای ID با یک Backend احراز هویت کنید

هنگامی که کاربر یک حساب Google را انتخاب می کند، مشتری ورود با یک ضربه، یک نشانه Google ID را بازیابی می کند. یک نشانه شناسه تأیید امضا شده هویت کاربر است که حاوی اطلاعات اولیه نمایه کاربر، احتمالاً شامل آدرس ایمیلی است که توسط Google تأیید شده است.

هنگامی که نشانه‌های شناسه در دسترس هستند، می‌توانید از آنها برای احراز هویت ایمن با باطن برنامه‌تان یا ثبت نام خودکار کاربر برای یک حساب جدید بدون نیاز به تأیید آدرس ایمیل کاربر استفاده کنید.

برای ورود به سیستم یا ثبت نام کاربری با یک رمز شناسه، رمز را به باطن برنامه خود ارسال کنید. در باطن، توکن را با استفاده از یک کتابخانه سرویس گیرنده Google API یا یک کتابخانه JWT همه منظوره تأیید کنید. اگر کاربر قبلاً با این حساب Google وارد برنامه شما نشده است، یک حساب جدید ایجاد کنید.

اگر به صورت اختیاری استفاده از nonce را برای کمک به جلوگیری از حملات مجدد انتخاب کرده اید، از getNonce برای ارسال آن به همراه شناسه توکن به سرور باطن خود استفاده کنید و مقدار مورد انتظار را بررسی کنید. توصیه می کنیم برای بهبود ایمنی و امنیت کاربر، قویاً از Nonce استفاده کنید.

یک رمز شناسه از شی credentials دریافت کنید

پس از بازیابی اعتبار یک کاربر، بررسی کنید که آیا شیء اعتبار دارای یک نشانه شناسه است یا خیر. اگر این کار را کرد، آن را به باطن خود ارسال کنید.

جاوا

public class YourActivity extends AppCompatActivity {

  // ...
  private static final int REQ_ONE_TAP = 2;  // Can be any integer unique to the Activity.
  private boolean showOneTapUI = true;
  // ...

  @Override
  protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
      super.onActivityResult(requestCode, resultCode, data);

      switch (requestCode) {
          case REQ_ONE_TAP:
              try {
                  SignInCredential credential = oneTapClient.getSignInCredentialFromIntent(data);
                  String idToken = credential.getGoogleIdToken();
                  if (idToken !=  null) {
                      // Got an ID token from Google. Use it to authenticate
                      // with your backend.
                      Log.d(TAG, "Got ID token.");
                  }
              } catch (ApiException e) {
                  // ...
              }
              break;
      }
  }
}

کاتلین

class YourActivity : AppCompatActivity() {

    // ...
    private val REQ_ONE_TAP = 2  // Can be any integer unique to the Activity
    private var showOneTapUI = true
    // ...

    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        super.onActivityResult(requestCode, resultCode, data)

        when (requestCode) {
             REQ_ONE_TAP -> {
                try {
                    val credential = oneTapClient.getSignInCredentialFromIntent(data)
                    val idToken = credential.googleIdToken
                    when {
                        idToken != null -> {
                            // Got an ID token from Google. Use it to authenticate
                            // with your backend.
                            Log.d(TAG, "Got ID token.")
                        }
                        else -> {
                            // Shouldn't happen.
                            Log.d(TAG, "No ID token!")
                        }
                    }
                } catch (e: ApiException) {
                    // ...
            }
        }
    }
    // ...
}