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

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

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

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

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

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

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

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