আপনার প্ল্যাটফর্ম থেকে সরাসরি Google অ্যাকাউন্ট লিঙ্কিং শুরু করুন।

অ্যাকাউন্ট লিঙ্কিং সরাসরি আপনার মোবাইল অ্যাপের মধ্যে সম্পন্ন করা যেতে পারে, আপনার ব্যবহারকারীদের তাদের Google অ্যাকাউন্টের সাথে আপনার পরিষেবাতে তাদের অ্যাকাউন্ট লিঙ্ক করার অনুমতি দেয়। প্রতিষ্ঠিত লিঙ্কটি Google-কে সেই ডেটাতে অ্যাক্সেস দেয় যা ব্যবহারকারী শেয়ার করতে সম্মত হন।

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

ব্যবহারকারীদের জন্য সুবিধার মধ্যে রয়েছে:

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

বিকাশকারীদের জন্য সুবিধার মধ্যে রয়েছে:

  • আপনার মোবাইল অ্যাপে কোথায় প্রচার করতে হবে এবং অ্যাকাউন্ট লিঙ্কিং শুরু করতে হবে তা নিয়ন্ত্রণ করুন, উদাহরণস্বরূপ, ব্যবহারকারীর সেটিংসে, ইন্টারস্টিশিয়ালে বা কোনও ব্যবহারকারী আপনার মোবাইল অ্যাপে সাইন ইন করার পরে। অ্যাকাউন্ট লিঙ্কিং শুরু করার জন্য একাধিক এন্ট্রি পয়েন্ট যোগ করা অ্যাকাউন্ট লিঙ্কিংকে আরও আবিষ্কারযোগ্য করে তুলতে সাহায্য করে, যার ফলে যুক্ত থাকা এবং লিঙ্ক করা অ্যাকাউন্টের সংখ্যা বৃদ্ধি পায়।
  • ব্যবহারকারীরা স্ট্যান্ডার্ড ওয়েব-ভিত্তিক OAuth প্রবাহের চেয়ে কম ধাপে লিঙ্ক করার প্রক্রিয়া সম্পূর্ণ করতে সক্ষম হওয়ায় রূপান্তর হার বৃদ্ধি করুন।
  • আপনার প্ল্যাটফর্ম (Android) থেকে লিঙ্ক বাস্তবায়নের জন্য কম প্রকৌশলী প্রচেষ্টা প্রয়োজন কারণ এই প্রবাহটি আপনার বিদ্যমান OAuth2.0 বাস্তবায়নের সুবিধা দেয়, ধরে নিচ্ছি যে আপনি ইতিমধ্যে একটি বাস্তবায়ন করেছেন।
  • ড্রপ-অফ রেট হ্রাস করা হয়েছে কারণ ব্যবহারকারীদের তাদের লগইন শংসাপত্রগুলি পুনরায় প্রবেশ করতে হবে না এবং কম ধাপে প্রক্রিয়াটি সম্পূর্ণ করতে সক্ষম। ড্রপ-অফ রেট 80% এর মতো বেশি হতে পারে যেখানে ব্যবহারকারীদের তাদের সাইন-ইন শংসাপত্রগুলি প্রত্যাহার করতে হবে এবং প্রবেশ করতে হবে৷

কিভাবে এটা কাজ করে

আপনার প্ল্যাটফর্ম থেকে লিঙ্কটি নিম্নলিখিত ধাপে সম্পন্ন হয়েছে:

  1. ব্যবহারকারী আপনার মোবাইল অ্যাপে একটি লিঙ্কিং ট্রিগার ক্লিক/টগল করবেন।
  2. ব্যবহারকারী লিঙ্ক করতে Google অ্যাকাউন্ট নির্বাচন করে।
    1. ব্যবহারকারী লিঙ্ক করতে ডিভাইসে একটি বিদ্যমান Google অ্যাকাউন্ট নির্বাচন করে বা একটি নতুন অ্যাকাউন্ট দিয়ে সাইন ইন করে৷
  3. ব্যবহারকারীকে একটি Google হোস্ট করা সম্মতি স্ক্রীন দেখানো হয় এবং লিঙ্কিং প্রক্রিয়া বন্ধ করতে তাকে চালিয়ে যেতে বা বাতিল করতে সম্মত হতে হবে।
  4. ব্যবহারকারীকে আপনার সম্মতির স্ক্রীন দেখানো হয়েছে এবং লিঙ্কিং প্রক্রিয়া বন্ধ করতে তাকে চালিয়ে যেতে বা বাতিল করতে সম্মত হতে হবে।
  5. লিঙ্কটি ব্যবহারকারীর অ্যাকাউন্ট, আপনার পরিষেবা এবং তাদের Google অ্যাকাউন্টের মধ্যে প্রতিষ্ঠিত হয়।

চিত্র 1 . আপনার প্ল্যাটফর্ম ফ্লো থেকে লিঙ্ক

প্রয়োজনীয়তা

আপনার প্ল্যাটফর্ম থেকে লিঙ্ক বাস্তবায়ন করতে, আপনার নিম্নলিখিতগুলি প্রয়োজন:

  • একটি অ্যান্ড্রয়েড অ্যাপ।
  • OAuth 2.0 সার্ভারের মালিক, পরিচালনা এবং বজায় রাখুন যা OAuth 2.0 অনুমোদন কোড প্রবাহকে সমর্থন করে।

সেটআপ

নীচের পদক্ষেপগুলি নিয়ে এগিয়ে যাওয়ার আগে, আপনাকে অবশ্যই অ্যাকাউন্ট লিঙ্কিং নিবন্ধন প্রক্রিয়াটি সম্পূর্ণ করতে হবে৷

আপনার উন্নয়ন পরিবেশ সেট আপ করুন

আপনার ডেভেলপমেন্ট হোস্টে লেটেস্ট Google Play পরিষেবা পান:

  1. অ্যান্ড্রয়েড এসডিকে ম্যানেজার খুলুন।
  1. SDK টুলের অধীনে, Google Play পরিষেবাগুলি খুঁজুন।

  2. যদি এই প্যাকেজগুলির জন্য স্ট্যাটাস ইনস্টল করা না থাকে, সেগুলি উভয়ই নির্বাচন করুন এবং প্যাকেজ ইনস্টল করুন ক্লিক করুন।

আপনার অ্যাপ কনফিগার করুন

  1. আপনার প্রকল্প-স্তরের build.gradle ফাইলে, আপনার buildscript এবং allprojects উভয় বিভাগেই Google এর Maven সংগ্রহস্থল অন্তর্ভুক্ত করুন।

    buildscript {
        repositories {
            google()
        }
    }
    
    allprojects {
        repositories {
            google()
        }
    }
    
  2. আপনার মডিউলের অ্যাপ-লেভেল গ্রেডল ফাইলে "Google এর সাথে লিঙ্ক করুন" API-এর নির্ভরতা যোগ করুন, যা সাধারণত app/build.gradle হয় :

    dependencies {
      implementation 'com.google.android.gms:play-services-auth:21.1.0'
    }
    

আপনার প্ল্যাটফর্ম ফ্লো থেকে লিঙ্কটি Google দ্বারা সংরক্ষিত আপনার পরিষেবা দ্বারা প্রদত্ত একটি অ্যাক্সেস টোকেন হিসাবে পরিণত হবে৷ ব্যবহারকারীর জন্য টোকেন ফেরত দেওয়ার আগে অবশ্যই সম্মতি গ্রহণ করতে হবে।

ব্যবহারকারীর কাছ থেকে সম্মতি পেতে নীচের পদক্ষেপগুলি অনুসরণ করুন এবং Google Play পরিষেবা SDK-এর মাধ্যমে একটি প্রমাণীকরণ কোড টোকেন ফেরত দিন৷

  1. একটি PendingIntent তৈরি করুন যা আপনার সম্মতির কার্যকলাপ চালু করতে পারে - সম্মতিটি Play Services API দ্বারা চালু করা হয়েছে। যখন API কল করা হয় তখন আপনাকে একটি PendingIntent (যাকে স্পষ্টতার জন্য consentPendingIntent হিসাবে উল্লেখ করা হবে) প্রদান করতে হবে

    কোটলিন

    // Build a PendingIntent that can launch the consent activity
    val consentPendingIntent = buildConsentPendingIntent()
    

    জাভা

    // Build a PendingIntent that can launch your consent activity
    PendingIntent consentPendingIntent =
              buildConsentPendingIntent();
    
  2. সম্মতির অভিপ্রায় পরিচালনা করার জন্য সংশ্লিষ্ট কার্যকলাপ তৈরি করুন

    কোটলিন

      class ConsentActivity : AppCompatActivity
    
      private fun onConsentAccepted() {
          // Obtain a token (for simplicity, we’ll ignore the async nature
          // of the following call)
          val token = getToken()
          val intent = Intent()
                      .putExtra(SaveAccountLinkingTokenRequest.EXTRA_TOKEN,
                                token)
          setResult(Activity.RESULT_OK, intent)
          finish()
      }
    
      private fun onConsentRejectedOrCanceled() {
          setResult(Activity.RESULT_CANCELED)
          finish()
      }
    

    জাভা

      public class ConsentActivity extends AppCompatActivity {
        ...
        private void onConsentAccepted() {
          // Obtain a token (for simplicity, we’ll ignore the async nature of
          // the following call
          String token = getToken();
          Intent intent = new Intent();
          intent.putExtra(SaveAccountLinkingTokenRequest.EXTRA_TOKEN, token);
          setResult(Activity.RESULT_OK, intent);
          finish();
        }
    
        private void onConsentRejectedOrCanceled() {
          setResult(Activity.RESULT_CANCELED, null);
          finish();
        }
     }
    
    

    আমরা ধরে নিই যে ব্যবহারকারী যথাক্রমে আপনার সম্মতি গ্রহণ বা প্রত্যাখ্যান/বাতিল করলে onConsentAccpeted() এবং onConsentRejectedOrCanceled() পদ্ধতিগুলিকে বলা হয়।

  3. টোকেন সংরক্ষণের জন্য একটি অনুরোধ তৈরি করুন এবং অন্যান্য কনফিগারেশন পরামিতিগুলির মধ্যে, উপরের ধাপ 1 এ তৈরি PendingIntent পাস করুন।

    কোটলিন

      // Create an ActivityResultLauncher which registers a callback for the
      // Activity result contract
      val activityResultLauncher = registerForActivityResult(
        ActivityResultContracts.StartIntentSenderForResult())
        { result ->
          if (result.resultCode == RESULT_OK) {
            // Successfully finished the flow and saved the token
          } else {
            // Flow failed, for example the user may have canceled the flow
          }
        }
    
      // Build token save request
      val request = SaveAccountLinkingTokenRequest.builder()
        .setTokenType(SaveAccountLinkingTokenRequest.TOKEN_TYPE_AUTH_CODE)
        .setConsentPendingIntent(consentPendingIntent)
        .setServiceId("service-id-of-and-defined-by-developer")
        //Set the scopes that the token is valid for on your platform
        .setScopes(scopes)
        .build()
    
       // Launch consent activity and retrieve token
       Identity.getCredentialSavingClient(this)
         .saveAccountLinkingToken(request)
         .addOnSuccessListener( saveAccountLinkingTokenResult -> {
            if (saveAccountLinkingTokenResult.hasResolution()) {
              val pendingIntent = saveAccountLinkingTokenResult
                                  .getPendingIntent()
              val intentSenderRequest = IntentSenderRequest
                                        .Builder(pendingIntent).build()
              activityResultLauncher.launch(intentSenderRequest)
            } else {
               // This should not happen, let’s log this
               Log.e(TAG, "Failed to save token");
            }
          })
          .addOnFailureListener(e -> Log.e(TAG, “Failed to save token”, e))
    

    জাভা

      // Create an ActivityResultLauncher which registers a callback for the
      // Activity result contract
      ActivityResultLauncher<IntentSenderRequest>
          activityResultLauncher =
          registerForActivityResult(new ActivityResultContracts
                                        .StartIntentSenderForResult(),
                                    result -> {
          if (result.getResultCode() == RESULT_OK) {
              // Successfully finished the flow and saved the token
          } else {
              // Flow failed, for example the user may have canceled the flow
          }
      });
    
     // Build token save request
     SaveAccountLinkingTokenRequest request =
        SaveAccountLinkingTokenRequest.builder()
            .setTokenType(
                SaveAccountLinkingTokenRequest.TOKEN_TYPE_AUTH_CODE)
            .setConsentPendingIntent(consentPendingIntent)
            .setServiceId("service-id-of-and-defined-by-developer")
            //Set the scopes that the token is valid for on your platform
            .setScopes(scopes)
            .build();
    
      // Launch consent activity and retrieve token
      Identity.getCredentialSavingClient(this)
          .saveAccountLinkingToken(request)
          .addOnSuccessListener(
              saveAccountLinkingTokenResult -> {
                if (saveAccountLinkingTokenResult.hasResolution()) {
                  // Launch the resolution intent
                  PendingIntent pendingIntent =
                      saveAccountLinkingTokenResult.getPendingIntent();
                  IntentSenderRequest intentSenderRequest =
                      new IntentSenderRequest.Builder(pendingIntent).build();
                  activityResultLauncher.launch(intentSenderRequest);
                } else {
                  // This should not happen, let’s log this
                  Log.e(TAG, "Failed to save token");
                }
              })
          .addOnFailureListener(e -> Log.e(TAG, "Failed to save token", e));
      ```
    

উপরের ধাপগুলি একজন ব্যবহারকারীকে সম্মতির জন্য অনুরোধ করে এবং Google-এ একটি অনুমোদন কোড ফেরত দেয়।

সেরা অনুশীলন

  • আপনার অ্যাপটি একটি বোতাম, টগল বা অনুরূপ ভিজ্যুয়াল উপাদানের মাধ্যমে ব্যবহারকারীকে লিঙ্কের স্থিতি নির্দেশ করবে।

    চিত্র 1 . নমুনা লিঙ্ক স্ট্যাটাস ইমেজ

  • একটি সফল লিঙ্কের পরে আপনার ব্যবহারকারীকে অবহিত করা উচিত যেমন একটি টোস্ট প্রদর্শন করা, একটি টগল স্টেট পরিবর্তন ট্রিগার করা বা ব্যবহারকারীকে একটি পৃথক লিঙ্ক সফল পৃষ্ঠায় পুনঃনির্দেশ করা উচিত।

  • আপনার অ্যাপ-মধ্যস্থ ব্যবহারকারীদের অ্যাকাউন্ট লিঙ্ক করার জন্য অনুরোধ করা উচিত, আদর্শভাবে শক্তিশালী সংকেতের উপর ভিত্তি করে যে লিঙ্ক করা এই ধরনের ব্যবহারকারীদের উপকার করবে।

  • সফলভাবে লিঙ্ক করার পরে, আপনার ব্যবহারকারীদের লিঙ্ক করা অ্যাকাউন্টের সাথে কী করতে হবে তার একটি উদাহরণ দেওয়া উচিত যেমন আপনি যদি এইমাত্র একটি মিউজিক স্ট্রিমিং পরিষেবা লিঙ্ক করেন, আপনার Google অ্যাসিস্ট্যান্টকে সঙ্গীত চালাতে বলুন।

  • ব্যবহারকারীদের লিঙ্কমুক্ত করার বিকল্প সহ তাদের লিঙ্ক করা অ্যাকাউন্টগুলি পরিচালনা করতে সক্ষম করুন৷ তাদের Google লিঙ্ক করা অ্যাকাউন্ট ম্যানেজমেন্ট পৃষ্ঠাতে নির্দেশ করুন, অর্থাৎ, https://myaccount.google.com/accountlinking।

রেফারেন্স

Android auth api রেফারেন্স ডকুমেন্টেশন