आईडी टोकन का इस्तेमाल करके बैकएंड के साथ पुष्टि करें

जब उपयोगकर्ता कोई Google खाता चुनता है, तो One Tap साइन-इन क्लाइंट, Google आईडी टोकन को वापस लाता है. आईडी टोकन, उपयोगकर्ता की पहचान की पुष्टि करने वाला एक एसेर्टेशन होता है. इसमें उपयोगकर्ता की प्रोफ़ाइल की बुनियादी जानकारी भी शामिल होती है. इसमें ऐसा ईमेल पता भी शामिल हो सकता है जिसकी पुष्टि Google ने की हो.

आईडी टोकन उपलब्ध होने पर, इनका इस्तेमाल अपने ऐप्लिकेशन के बैकएंड के साथ सुरक्षित तरीके से पुष्टि करने के लिए किया जा सकता है. इसके अलावा, इनका इस्तेमाल उपयोगकर्ता के ईमेल पते की पुष्टि किए बिना, उसे नए खाते के लिए अपने-आप साइन अप कराने के लिए भी किया जा सकता है.

किसी उपयोगकर्ता को आईडी टोकन की मदद से साइन इन या साइन अप कराने के लिए, टोकन को अपने ऐप्लिकेशन के बैकएंड पर भेजें. बैकएंड पर, Google API क्लाइंट लाइब्रेरी या सामान्य तौर पर इस्तेमाल होने वाली JWT लाइब्रेरी का इस्तेमाल करके, टोकन की पुष्टि करें. अगर उपयोगकर्ता ने इस Google खाते से पहले कभी आपके ऐप्लिकेशन में साइन इन नहीं किया है, तो नया खाता बनाएं.

अगर आपने रीप्ले अटैक से बचने के लिए, वैकल्पिक रूप से नॉन्स का इस्तेमाल करने का विकल्प चुना है, तो इसे आईडी टोकन के साथ अपने बैकएंड सर्वर पर भेजने के लिए, getNonce का इस्तेमाल करें. साथ ही, उम्मीद की गई वैल्यू की जांच करें. हमारा सुझाव है कि उपयोगकर्ता की सुरक्षा को बेहतर बनाने के लिए, आप नॉन्स का इस्तेमाल करें.

क्रेडेंशियल ऑब्जेक्ट से आईडी टोकन पाना

उपयोगकर्ता के क्रेडेंशियल वापस पाने के बाद, देखें कि क्रेडेंशियल ऑब्जेक्ट में आईडी टोकन शामिल है या नहीं. अगर ऐसा होता है, तो इसे अपने बैकएंड पर भेजें.

Java

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;
      }
  }
}

Kotlin

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