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

کلاینت ورود با One Tap، هنگامی که کاربر یک حساب گوگل را انتخاب می‌کند، یک توکن شناسه گوگل (Google ID token) بازیابی می‌کند. توکن شناسه، یک تایید هویت امضا شده از کاربر است که شامل اطلاعات اولیه پروفایل کاربر، احتمالاً شامل یک آدرس ایمیل که توسط گوگل تأیید شده است، نیز می‌شود.

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

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

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

یک توکن شناسه از شیء اعتبارنامه‌ها دریافت کنید

پس از بازیابی اطلاعات کاربری، بررسی کنید که آیا شیء اطلاعات کاربری شامل توکن شناسه (ID token) است یا خیر. در صورت وجود، آن را به backend خود ارسال کنید.

جاوا

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) {
                    // ...
            }
        }
    }
    // ...
}