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

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

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

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

আপনি যদি ঐচ্ছিকভাবে রিপ্লে আক্রমণ এড়াতে সাহায্য করার জন্য একটি নন্স ব্যবহার করা বেছে নিয়ে থাকেন, তাহলে আপনার ব্যাকএন্ড সার্ভারে ID টোকেন সহ এটি পাঠাতে 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) {
                    // ...
            }
        }
    }
    // ...
}