اصالت‌سنجی با پس‌زمینه بااستفاده از شناسه ژتون‌ها

وقتی کاربر «حساب Google» را انتخاب می‌کند، کارخواه ورود به سیستم One Tap کد شناسه Google را بازیابی می‌کند. یک کد شناسه، ادعای امضاشده‌ای از هویت کاربر است که همچنین حاوی اطلاعات نمایه پایه کاربر است، احتمالاً شامل یک نشانی ایمیل که توسط Google تأیید شده است.

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

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

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

دریافت کردن کد شناسه از شیء اطلاعات اعتباری

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

جاوا

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