পরিধানযোগ্য উপর প্রমাণীকরণ

Wear OS অ্যাপগুলি সঙ্গী অ্যাপ ছাড়াই স্বতন্ত্রভাবে চলতে পারে। এর মানে হল যে একটি Wear OS অ্যাপকে ইন্টারনেট থেকে ডেটা অ্যাক্সেস করার সময় নিজেই প্রমাণীকরণ পরিচালনা করতে হবে। কিন্তু ঘড়ির ছোট পর্দার আকার এবং কম ইনপুট ক্ষমতা একটি Wear OS অ্যাপ ব্যবহার করতে পারে এমন প্রমাণীকরণ বিকল্পগুলিকে সীমিত করে।

এই নির্দেশিকাটি Wear OS অ্যাপগুলির জন্য প্রস্তাবিত প্রমাণীকরণ পদ্ধতিগুলির পাশাপাশি বিকল্পগুলিকে কভার করে যখন সেই পদ্ধতিগুলি কোনও অ্যাপের ব্যবহারের ক্ষেত্রে খাপ খায় না৷

একটি ভাল সাইন-ইন অভিজ্ঞতা কীভাবে ডিজাইন করবেন সে সম্পর্কে আরও জানতে, সাইন-ইন UX গাইড দেখুন।

অতিথি মোড

সমস্ত কার্যকারিতার জন্য প্রমাণীকরণের প্রয়োজন নেই। পরিবর্তে, ব্যবহারকারীকে সাইন ইন করার প্রয়োজন ছাড়াই যতটা সম্ভব বৈশিষ্ট্য প্রদান করুন৷

ব্যবহারকারীরা মোবাইল অ্যাপ ব্যবহার না করেই আপনার Wear অ্যাপটি আবিষ্কার ও ইনস্টল করতে পারে, তাই তাদের একটি অ্যাকাউন্ট নাও থাকতে পারে এবং এটি কী বৈশিষ্ট্যগুলি অফার করে তা নাও জানতে পারে। নিশ্চিত করুন গেস্ট মোড কার্যকারিতা আপনার অ্যাপের বৈশিষ্ট্যগুলি সঠিকভাবে প্রদর্শন করে৷

প্রস্তাবিত প্রমাণীকরণ পদ্ধতি

ব্যবহারকারীর প্রমাণীকরণ শংসাপত্রগুলি পেতে স্বতন্ত্র Wear OS অ্যাপগুলিকে সক্ষম করতে নিম্নলিখিত প্রমাণীকরণ পদ্ধতিগুলি ব্যবহার করুন৷

ডেটা স্তর ব্যবহার করে টোকেন পাস করুন

ফোন সহচর অ্যাপ পরিধানযোগ্য ডেটা লেয়ার ব্যবহার করে Wear OS অ্যাপে প্রমাণীকরণ ডেটা নিরাপদে স্থানান্তর করতে পারে। বার্তা বা ডেটা আইটেম হিসাবে শংসাপত্র স্থানান্তর.

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

গুরুত্বপূর্ণ: আপনার Wear অ্যাপটিকে অবশ্যই অন্য একটি প্রমাণীকরণ পদ্ধতি অফার করতে হবে, কারণ এই বিকল্পটি শুধুমাত্র Android-পেয়ার করা ঘড়িতে কাজ করে যখন সংশ্লিষ্ট মোবাইল অ্যাপ ইনস্টল করা থাকে। যেসব ব্যবহারকারীদের কাছে সংশ্লিষ্ট মোবাইল অ্যাপ নেই বা যাদের Wear OS ডিভাইস একটি iOS ডিভাইসের সাথে পেয়ার করা আছে তাদের জন্য একটি বিকল্প প্রমাণীকরণ পদ্ধতি প্রদান করুন।

মোবাইল অ্যাপ থেকে ডেটা লেয়ার ব্যবহার করে টোকেন পাস করুন, যেমনটি নিম্নলিখিত উদাহরণে দেখানো হয়েছে:

val token = "..." // Auth token to transmit to the wearable device.
val dataClient: DataClient = Wearable.getDataClient(context)
val putDataReq: PutDataRequest = PutDataMapRequest.create("/auth").run {
    dataMap.putString("token", token)
    asPutDataRequest()
}
val putDataTask: Task<DataItem> = dataClient.putDataItem(putDataReq)

নিম্নলিখিত উদাহরণে দেখানো হিসাবে ঘড়ি অ্যাপে ডেটা পরিবর্তন ইভেন্টগুলির জন্য শুনুন:

val dataClient: DataClient = Wearable.getDataClient(context)
dataClient.addListener{ dataEvents ->
    dataEvents.forEach { event ->
        if (event.type == DataEvent.TYPE_CHANGED) {
            val dataItemPath = event.dataItem.uri.path ?: ""
            if (dataItemPath.startsWith("/auth")) {
                val token = DataMapItem.fromDataItem(event.dataItem).dataMap.getString("token")
                // Display interstitial screen to notify the user they are being signed in.
                // Then, store the token and use it in network requests.
            }
        }
    }
}

পরিধানযোগ্য ডেটা লেয়ার ব্যবহার করার বিষয়ে আরও তথ্যের জন্য, Wear OS-এ ডেটা পাঠান এবং সিঙ্ক করুন দেখুন।

OAuth 2.0 ব্যবহার করুন

Wear OS দুটি OAuth 2.0-ভিত্তিক ফ্লোকে সমর্থন করে, যা অনুসরণ করা বিভাগগুলিতে বর্ণনা করা হয়েছে:

  • RFC 7636 -এ সংজ্ঞায়িত কোড এক্সচেঞ্জ (PKCE) এর জন্য প্রুফ কী সহ অনুমোদন কোড অনুদান
  • ডিভাইস অনুমোদন অনুদান, যেমন RFC 8628 এ সংজ্ঞায়িত করা হয়েছে

দ্রষ্টব্য: ঘড়িটি অ্যাম্বিয়েন্ট মোডে চলে গেলে আপনার অ্যাপ বন্ধ না হয়ে যায় তা নিশ্চিত করতে সহায়তা করার জন্য AmbientModeSupport.attach অ্যাক্টিভিটি প্রমাণীকরণে ব্যবহার করে সবসময় চালু করুন। অ্যাম্বিয়েন্ট মোডে সেরা অনুশীলন সম্পর্কে আরও তথ্যের জন্য, Wear-এ আপনার অ্যাপকে দৃশ্যমান রাখুন দেখুন।

কোড এক্সচেঞ্জের জন্য প্রমাণ কী (PKCE)

PKCE কার্যকরভাবে ব্যবহার করতে, RemoteAuthClient ব্যবহার করুন।

আপনার Wear OS অ্যাপ থেকে OAuth প্রদানকারীর কাছে একটি প্রমাণীকরণের অনুরোধ করতে, একটি OAuthRequest অবজেক্ট তৈরি করুন। এই অবজেক্টটি একটি টোকেন এবং একটি CodeChallenge অবজেক্ট পাওয়ার জন্য আপনার OAuth এন্ডপয়েন্টের একটি URL নিয়ে গঠিত। নিম্নলিখিত কোড একটি প্রমাণীকরণ অনুরোধ তৈরি করার একটি উদাহরণ দেখায়:

val request = OAuthRequest.Builder(this.applicationContext)
    .setAuthProviderUrl(Uri.parse("https://...."))
    .setClientId(clientId)
    .setCodeChallenge(codeChallenge)
    .build()

আপনি অনুমোদনের অনুরোধটি তৈরি করার পরে, sendAuthorizationRequest() পদ্ধতি ব্যবহার করে সঙ্গী অ্যাপে পাঠান:

val client = RemoteAuthClient.create(this)
client.sendAuthorizationRequest(request,
    { command -> command?.run() },
    object : RemoteAuthClient.Callback() {
        override fun onAuthorizationResponse(
            request: OAuthRequest,
            response: OAuthResponse
        ) {
            // Extract the token from the response, store it and use it in network requests.
        }

        override fun onAuthorizationError(errorCode: Int) {
            // Handle error
        }
    }
)

এই অনুরোধটি সহচর অ্যাপে একটি কল ট্রিগার করে, যা ব্যবহারকারীর মোবাইল ফোনে একটি ওয়েব ব্রাউজারে একটি অনুমোদন UI উপস্থাপন করে। OAuth 2.0 প্রদানকারী ব্যবহারকারীকে প্রমাণীকরণ করে এবং অনুরোধকৃত অনুমতির জন্য ব্যবহারকারীর সম্মতি গ্রহণ করে। প্রতিক্রিয়া স্বয়ংক্রিয়ভাবে তৈরি পুনঃনির্দেশ URL এ পাঠানো হয়.

একটি সফল বা ব্যর্থ অনুমোদনের পরে, OAuth 2.0 সার্ভার অনুরোধে নির্দিষ্ট URL-এ পুনঃনির্দেশ করে৷ ব্যবহারকারী যদি অ্যাক্সেস অনুরোধ অনুমোদন করে, তাহলে প্রতিক্রিয়াটিতে একটি অনুমোদন কোড থাকে। ব্যবহারকারী অনুরোধটি অনুমোদন না করলে, প্রতিক্রিয়াটিতে একটি ত্রুটি বার্তা রয়েছে।

প্রতিক্রিয়াটি একটি ক্যোয়ারী স্ট্রিং আকারে এবং নিম্নলিখিত উদাহরণগুলির মতো দেখায়:

  https://wear.googleapis.com/3p_auth/com.your.package.name?code=xyz
  https://wear.googleapis-cn.com/3p_auth/com.your.package.name?code=xyz

এটি একটি পৃষ্ঠা লোড করে যা ব্যবহারকারীকে সহচর অ্যাপে নির্দেশ করে৷ সহচর অ্যাপটি প্রতিক্রিয়া URL যাচাই করে এবং onAuthorizationResponse API ব্যবহার করে তৃতীয় পক্ষের ঘড়ি অ্যাপে প্রতিক্রিয়া রিলে করে।

ঘড়ি অ্যাপ তারপর একটি অ্যাক্সেস টোকেনের জন্য অনুমোদন কোড বিনিময় করতে পারে।

দ্রষ্টব্য: একবার OAuthRequest তৈরি হয়ে গেলে, আপনি redirectUrl অ্যাক্সেস করে আপনার পুনঃনির্দেশ URL খুঁজে পেতে পারেন।

ডিভাইস অনুমোদন অনুদান

ডিভাইস অনুমোদন অনুদান ব্যবহার করার সময়, ব্যবহারকারী অন্য ডিভাইসে যাচাইকরণ URI খোলে। তারপর অনুমোদন সার্ভার তাদের অনুরোধ অনুমোদন বা অস্বীকার করতে বলে।

এই প্রক্রিয়াটিকে আরও সহজ করতে, ব্যবহারকারীর পেয়ার করা মোবাইল ডিভাইসে একটি ওয়েব পৃষ্ঠা খুলতে একটি RemoteActivityHelper ব্যবহার করুন, যেমনটি নিম্নলিখিত উদাহরণে দেখানো হয়েছে:

// Request access from the authorization server and receive Device Authorization Response.
val verificationUri = "..." // Extracted from the Device Authorization Response.
RemoteActivityHelper.startRemoteActivity(
    this,
    Intent(Intent.ACTION_VIEW)
        .addCategory(Intent.CATEGORY_BROWSABLE)
        .setData(Uri.parse(verificationUri)),
    null
)
// Poll the authorization server to find out if the user completed the user authorization
// step on their mobile device.

আপনার যদি একটি iOS অ্যাপ থাকে, তাহলে টোকেন অনুমোদন করার জন্য ব্রাউজারের উপর নির্ভর না করে আপনার অ্যাপে এই অভিপ্রায়টি আটকাতে সর্বজনীন লিঙ্কগুলি ব্যবহার করুন৷

অন্যান্য প্রমাণীকরণ পদ্ধতি

Wear OS অতিরিক্ত সাইন-ইন পদ্ধতি সমর্থন করে, যা নিম্নলিখিত বিভাগে বর্ণিত হয়েছে।

Google সাইন-ইন

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

পূর্বে বর্ণিত প্রস্তাবিত প্রমাণীকরণ পদ্ধতির পরে, Google সাইন-ইন হল পরবর্তী পছন্দের সমাধান কারণ এটি iOS এও ভাল কাজ করে। নিম্নলিখিত বিভাগটি বর্ণনা করে কিভাবে একটি মৌলিক Google সাইন-ইন ইন্টিগ্রেশন সম্পূর্ণ করতে হয়।

পূর্বশর্ত

আপনার Wear OS অ্যাপে Google সাইন-ইন সংহত করা শুরু করার আগে, আপনাকে অবশ্যই একটি Google API কনসোল প্রজেক্ট কনফিগার করতে হবে এবং আপনার Android Studio প্রোজেক্ট সেট আপ করতে হবে। আরও তথ্যের জন্য, আপনার Android অ্যাপে Google সাইন-ইন ইন্টিগ্রেট করা শুরু করুন দেখুন।

আপনি যদি ব্যাকএন্ড সার্ভারের সাথে যোগাযোগ করে এমন একটি অ্যাপ বা সাইটের সাথে Google সাইন-ইন ব্যবহার করেন, তাহলে দুটি অতিরিক্ত পূর্বশর্ত রয়েছে:
  • আপনার ব্যাকএন্ড সার্ভারের জন্য একটি OAuth 2.0 ওয়েব অ্যাপ্লিকেশন ক্লায়েন্ট আইডি তৈরি করুন৷ এই ক্লায়েন্ট আইডি আপনার অ্যাপের ক্লায়েন্ট আইডি থেকে আলাদা। আরও তথ্যের জন্য, সার্ভার-সাইড অ্যাক্সেস সক্ষম করা দেখুন।
  • HTTPS ব্যবহার করে ব্যবহারকারীর আইডি টোকেন পাঠিয়ে সার্ভারে বর্তমানে সাইন-ইন করা ব্যবহারকারীকে নিরাপদে শনাক্ত করুন। ব্যাকএন্ড সার্ভারে আপনার ব্যবহারকারীকে কীভাবে প্রমাণীকরণ করতে হয় তা জানতে, একটি ব্যাকএন্ড সার্ভারের মাধ্যমে প্রমাণীকরণ দেখুন।

আপনার অ্যাপে Google সাইন-ইন সংহত করুন

আপনার Wear OS অ্যাপে Google সাইন-ইন সংহত করার জন্য নিম্নলিখিত ধাপগুলি পর্যালোচনা করুন এবং প্রয়োগ করুন, যা অনুসরণ করা বিভাগগুলিতে বিশদ বিবরণ রয়েছে:

  1. Google সাইন-ইন কনফিগার করুন
  2. একটি Google সাইন-ইন বোতাম যোগ করুন
  3. সাইন-ইন বোতামটি আলতো চাপলে সাইন-ইন প্রবাহ শুরু করুন

Google সাইন-ইন কনফিগার করুন এবং GoogleApiClient অবজেক্ট তৈরি করুন

আপনার সাইন-ইন কার্যকলাপের onCreate() পদ্ধতিতে, আপনার অ্যাপের জন্য প্রয়োজনীয় ব্যবহারকারীর ডেটার অনুরোধ করতে Google সাইন-ইন কনফিগার করুন। তারপরে, Google সাইন-ইন API এবং আপনার নির্দিষ্ট করা বিকল্পগুলিতে অ্যাক্সেস সহ একটি GoogleApiClient অবজেক্ট তৈরি করুন৷ এই পদক্ষেপগুলি নিম্নলিখিত উদাহরণে দেখানো হয়েছে:

  public class MyNewActivity extends AppCompatActivity {

    private static final int RC_SIGN_IN = 9001;

    private GoogleSignInClient mSignInClient;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        GoogleSignInOptions options =
               new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
                        .build();

        mSignInClient = GoogleSignIn.getClient(this, options);
    }
  }

আপনার অ্যাপে একটি Google সাইন-ইন বোতাম যোগ করুন

একটি Google সাইন-ইন বোতাম যোগ করতে নিম্নলিখিত পদক্ষেপগুলি সম্পূর্ণ করুন:
  1. আপনার অ্যাপের লেআউটে SignInButton যোগ করুন:
  2.  <com.google.android.gms.common.SignInButton
     android:id="@+id/sign_in_button"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content" />
    
  3. আপনার অ্যাপের onCreate() পদ্ধতিতে, ট্যাপ করার সময় ব্যবহারকারীকে সাইন ইন করতে আপনার বোতামের OnClickListener নিবন্ধন করুন:
  4. কোটলিন

    findViewById<View>(R.id.sign_in_button).setOnClickListener(this)
    

    জাভা

    findViewById(R.id.sign_in_button).setOnClickListener(this);
    

একটি সাইন-ইন অভিপ্রায় তৈরি করুন এবং সাইন-ইন প্রবাহ শুরু করুন৷

getSignInIntent() পদ্ধতিতে সাইন-ইন করার অভিপ্রায় তৈরি করে আপনার onCLick() পদ্ধতিতে সাইন-ইন বোতাম ট্যাপগুলি পরিচালনা করুন। তারপর startActivityForResult() পদ্ধতি দিয়ে অভিপ্রায় শুরু করুন।

  Intent intent = mSignInClient.getSignInIntent();
  startActivityForResult(intent, RC_SIGN_IN);

The user is prompted to select a Google account to sign in with. If you requested scopes beyond profile, email, and open ID, the user is also prompted to grant access to those resources.

Finally, in the activity's onActivityResult method, retrieve the sign-in result with getSignInResultFromIntent. After you retrieve the sign-in result, you can check whether the sign-in succeeded using the isSuccess method. If sign-in succeeds, you can call the getSignInAccount method to get a GoogleSignInAccount object that contains information about the signed-in user, such as the user's name. These steps are shown in the following example:

Kotlin

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent) {
    super.onActivityResult(requestCode, resultCode, data)

    // Result returned from launching the Intent from GoogleSignInApi.getSignInIntent(...).
    if (requestCode == RC_SIGN_IN) {
        Auth.GoogleSignInApi.getSignInResultFromIntent(data)?.apply {
            if (isSuccess) {
                // Get account information.
                fullName = signInAccount?.displayName
                mGivenName = signInAccount?.givenName
                mFamilyName = signInAccount?.familyName
                mEmail = signInAccount?.email
            }
        }
    }
}

জাভা

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    // Result returned from launching the Intent from GoogleSignInApi.getSignInIntent(...).
    if (requestCode == RC_SIGN_IN) {
        GoogleSignInResult signInResult = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
        if (signInResult.isSuccess()) {
            GoogleSignInAccount acct = signInResult.getSignInAccount();

            // Get account information.
            fullName = acct.getDisplayName();
            givenName = acct.getGivenName();
            familyName = acct.getFamilyName();
            email = acct.getEmail();
        }
    }
}

Google সাইন-ইন প্রয়োগ করে এমন একটি নমুনা অ্যাপ দেখতে, GitHub-এ Horologist Google সাইন-ইন নমুনা দেখুন।

কাস্টম কোড প্রমাণীকরণ

পূর্বে বর্ণিত প্রমাণীকরণ পদ্ধতির বিকল্প হিসাবে, আপনি ব্যবহারকারীকে অন্য ডিভাইস থেকে প্রমাণীকরণের প্রয়োজন করতে পারেন, যেমন একটি মোবাইল ফোন বা ট্যাবলেট, এবং একটি স্বল্পকালীন সংখ্যাসূচক কোড পেতে পারেন৷ ব্যবহারকারী তারপরে তাদের পরিচয় নিশ্চিত করতে তাদের Wear OS ডিভাইসে কোডটি প্রবেশ করান এবং একটি প্রমাণীকরণ টোকেন পান।

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

এই সেটআপের জন্য প্রমাণীকরণ প্রবাহ নিম্নরূপ কাজ করে:

  1. ব্যবহারকারী Wear OS অ্যাপের মাধ্যমে একটি ক্রিয়া সম্পাদন করে যার জন্য অনুমোদনের প্রয়োজন হয়।
  2. Wear OS অ্যাপ ব্যবহারকারীর কাছে একটি প্রমাণীকরণ স্ক্রিন উপস্থাপন করে এবং ব্যবহারকারীকে একটি নির্দিষ্ট URL থেকে একটি কোড লিখতে নির্দেশ দেয়।
  3. ব্যবহারকারী একটি মোবাইল ডিভাইস, ট্যাবলেট বা পিসিতে স্যুইচ করে এবং তারপর একটি ব্রাউজার চালু করে, Wear OS অ্যাপে নির্দিষ্ট URL-এ নেভিগেট করে এবং লগ ইন করে।
  4. ব্যবহারকারী একটি স্বল্পস্থায়ী সাংখ্যিক কোড পায় যা তারা Wear OS অ্যাপের প্রমাণীকরণ স্ক্রিনে প্রবেশ করে Wear OS-এ অনবোর্ড কীবোর্ড ব্যবহার করে:

  5. এই মুহুর্তে, আপনি প্রবেশ করা কোডটিকে প্রমাণ হিসাবে ব্যবহার করতে পারেন যে এটিই সঠিক ব্যবহারকারী এবং পরবর্তীতে প্রমাণিত কলগুলির জন্য Wear OS ডিভাইসে সংরক্ষিত এবং সুরক্ষিত একটি প্রমাণীকরণ টোকেনের কোডটি বিনিময় করতে পারেন।

দ্রষ্টব্য: ব্যবহারকারী যে কোডটি তৈরি করে তা অবশ্যই বিশুদ্ধভাবে সংখ্যাসূচক হতে হবে এবং এতে কোনো বর্ণমালার অক্ষর থাকতে পারে না।

এই প্রমাণীকরণ প্রবাহটি নিম্নলিখিত চার্টে চিত্রিত করা হয়েছে: