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

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

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

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

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

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

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

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

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

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

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

আবশ্যকতা

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

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

সেটআপ

নিচের ধাপগুলি অনুসরণ করার আগে, আপনাকে অবশ্যই অ্যাকাউন্ট লিঙ্কিং নিবন্ধন প্রক্রিয়াটি সম্পন্ন করতে হবে।

আপনার ডেভেলপমেন্ট পরিবেশ সেটআপ করুন

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

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

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

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

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

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

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

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

ব্যবহারকারীর কাছ থেকে সম্মতি পেতে এবং Google Play Services 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. টোকেনটি সংরক্ষণের জন্য একটি অনুরোধ তৈরি করুন এবং অন্যান্য কনফিগারেশন প্যারামিটারের সাথে, উপরের ধাপ ১-এ তৈরি 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-কে একটি অনুমোদন কোড ফেরত পাঠায়।

সেরা অনুশীলন

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

    চিত্র ১। নমুনা লিঙ্ক স্ট্যাটাস চিত্র

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

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

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

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

তথ্যসূত্র

অ্যান্ড্রয়েড প্রমাণীকরণ এপিআই রেফারেন্স ডকুমেন্টেশন