আইডি টোকেন ব্যবহার করে একটি ব্যাকএন্ড দিয়ে প্রমাণীকরণ করুন

যখন ব্যবহারকারী একটি গুগল অ্যাকাউন্ট নির্বাচন করেন, তখন ওয়ান ট্যাপ সাইন-ইন ক্লায়েন্ট একটি গুগল আইডি টোকেন সংগ্রহ করে। আইডি টোকেন হলো ব্যবহারকারীর পরিচয়ের একটি স্বাক্ষরিত নিশ্চয়তা, যাতে ব্যবহারকারীর মৌলিক প্রোফাইল তথ্যও থাকে, যার মধ্যে গুগল দ্বারা যাচাইকৃত একটি ইমেল অ্যাড্রেসও অন্তর্ভুক্ত থাকতে পারে।

যখন আইডি টোকেন উপলব্ধ থাকে, তখন আপনি সেগুলি ব্যবহার করে আপনার অ্যাপের ব্যাকএন্ডের সাথে নিরাপদে প্রমাণীকরণ করতে পারেন, অথবা ব্যবহারকারীর ইমেল ঠিকানা যাচাই করার প্রয়োজন ছাড়াই স্বয়ংক্রিয়ভাবে একটি নতুন অ্যাকাউন্টের জন্য ব্যবহারকারীকে সাইন আপ করতে পারেন।

আইডি টোকেন ব্যবহার করে কোনো ব্যবহারকারীকে সাইন ইন বা সাইন আপ করাতে, টোকেনটি আপনার অ্যাপের ব্যাকএন্ডে পাঠান। ব্যাকএন্ডে, একটি গুগল এপিআই ক্লায়েন্ট লাইব্রেরি অথবা একটি সাধারণ JWT লাইব্রেরি ব্যবহার করে টোকেনটি যাচাই করুন। যদি ব্যবহারকারী এই গুগল অ্যাকাউন্ট দিয়ে আগে আপনার অ্যাপে সাইন ইন না করে থাকেন, তাহলে একটি নতুন অ্যাকাউন্ট তৈরি করুন।

যদি আপনি রিপ্লে অ্যাটাক এড়ানোর জন্য ঐচ্ছিকভাবে একটি ননস (nonce) ব্যবহার করার সিদ্ধান্ত নিয়ে থাকেন, তবে getNonce ব্যবহার করে আইডি টোকেনসহ সেটি আপনার ব্যাকএন্ড সার্ভারে পাঠান এবং প্রত্যাশিত মানটি যাচাই করুন। ব্যবহারকারীর সুরক্ষা ও নিরাপত্তা উন্নত করার জন্য আমরা আপনাকে ননস ব্যবহারের বিষয়টি গুরুত্ব সহকারে বিবেচনা করার পরামর্শ দিই।

ক্রেডেনশিয়ালস অবজেক্ট থেকে একটি আইডি টোকেন নিন।

ব্যবহারকারীর ক্রেডেনশিয়ালস সংগ্রহ করার পর, ক্রেডেনশিয়ালস অবজেক্টটিতে একটি আইডি টোকেন আছে কিনা তা যাচাই করুন। যদি থাকে, তবে সেটি আপনার ব্যাকএন্ডে পাঠিয়ে দিন।

জাভা

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