Wear OS অ্যাপগুলি সঙ্গী অ্যাপ ছাড়াই স্বতন্ত্রভাবে চলতে পারে। এর মানে হল যে একটি Wear OS অ্যাপকে ইন্টারনেট থেকে ডেটা অ্যাক্সেস করার সময় নিজেই প্রমাণীকরণ পরিচালনা করতে হবে। কিন্তু ঘড়ির ছোট পর্দার আকার এবং কম ইনপুট ক্ষমতা একটি Wear OS অ্যাপ ব্যবহার করতে পারে এমন প্রমাণীকরণ বিকল্পগুলিকে সীমিত করে।
এই নির্দেশিকাটি Wear OS অ্যাপ, ক্রেডেনশিয়াল ম্যানেজার-এর জন্য প্রস্তাবিত প্রমাণীকরণ পদ্ধতির দিকনির্দেশ প্রদান করে।
একটি ভাল সাইন-ইন অভিজ্ঞতা কীভাবে ডিজাইন করবেন সে সম্পর্কে আরও জানতে, সাইন-ইন UX গাইড দেখুন।
প্রাথমিক বিবেচনা
আপনার বাস্তবায়ন শুরু করার আগে, নিম্নলিখিত পয়েন্টগুলি বিবেচনা করুন।
অতিথি মোড
সমস্ত কার্যকারিতার জন্য প্রমাণীকরণের প্রয়োজন নেই। পরিবর্তে, ব্যবহারকারীকে সাইন ইন করার প্রয়োজন ছাড়াই যতটা সম্ভব বৈশিষ্ট্য প্রদান করুন৷
ব্যবহারকারীরা মোবাইল অ্যাপ ব্যবহার না করেই আপনার Wear অ্যাপটি আবিষ্কার ও ইনস্টল করতে পারে, তাই তাদের একটি অ্যাকাউন্ট নাও থাকতে পারে এবং এটি কী বৈশিষ্ট্যগুলি অফার করে তা নাও জানতে পারে। নিশ্চিত করুন গেস্ট মোড কার্যকারিতা আপনার অ্যাপের বৈশিষ্ট্যগুলি সঠিকভাবে প্রদর্শন করে৷
কিছু ডিভাইস বেশিক্ষণ আনলক থাকতে পারে
Wear OS 5 বা উচ্চতর চালিত সমর্থিত ডিভাইসগুলিতে, ব্যবহারকারী তাদের কব্জিতে ডিভাইসটি পরেছেন কিনা তা সিস্টেম সনাক্ত করে। ব্যবহারকারী যদি কব্জি সনাক্তকরণ বন্ধ করে দেয় এবং তারপরে তাদের কব্জি থেকে ডিভাইসটি সরিয়ে নেয়, তবে সিস্টেমটি অন্যথার চেয়ে দীর্ঘ সময়ের জন্য ডিভাইসটিকে আনলক রাখে।
আপনার অ্যাপের যদি উচ্চ স্তরের নিরাপত্তার প্রয়োজন হয়—যেমন সম্ভাব্য সংবেদনশীল বা ব্যক্তিগত ডেটা প্রদর্শন করার সময়—প্রথমে কব্জি সনাক্তকরণ সক্ষম করা আছে কিনা তা পরীক্ষা করুন:
val wristDetectionEnabled =
isWristDetectionAutoLockingEnabled(applicationContext)
এই পদ্ধতির রিটার্ন মান false
হলে, ব্যবহারকারী-নির্দিষ্ট সামগ্রী প্রদর্শন করার আগে ব্যবহারকারীকে আপনার অ্যাপে একটি অ্যাকাউন্টে সাইন ইন করতে অনুরোধ করুন।
শংসাপত্র ম্যানেজার
Wear OS-এ প্রমাণীকরণের জন্য ক্রেডেনশিয়াল ম্যানেজার হল প্রস্তাবিত API। এটি ব্যবহারকারীদের একটি স্বতন্ত্র সেটিংসে Wear OS অ্যাপ্লিকেশনগুলিতে সাইন ইন করার জন্য একটি আরও নিরাপদ পরিবেশ প্রদান করে, একটি সংযুক্ত জোড়া ফোনের প্রয়োজন ছাড়াই এবং তাদের পাসওয়ার্ড মনে রাখার প্রয়োজন ছাড়াই৷
এই দস্তাবেজটি সেই তথ্যের রূপরেখা দেয় যা ডেভেলপারদের এটি হোস্ট করা স্ট্যান্ডার্ড প্রমাণীকরণ প্রক্রিয়া সহ একটি শংসাপত্র ব্যবস্থাপক সমাধান বাস্তবায়ন করতে হবে, যা হল:
- পাসকি
- পাসওয়ার্ড
- ফেডারেটেড আইডেন্টিটি (যেমন Google এর সাথে সাইন ইন)
ক্রেডেনশিয়াল ম্যানেজারের জন্য ব্যাকআপ হিসাবে অন্যান্য গ্রহণযোগ্য Wear OS প্রমাণীকরণ পদ্ধতিগুলি ( ডেটা লেয়ার টোকেন শেয়ারিং এবং OAuth ) কীভাবে স্থানান্তর করা যায় তার নির্দেশিকাও এই নির্দেশিকা প্রদান করে এবং এখন-বঞ্চিত স্বতন্ত্র Google সাইন ইন বোতাম থেকে এমবেডেড ক্রেডেনশিয়াল ম্যানেজার সংস্করণে স্থানান্তর পরিচালনা করার জন্য বিশেষ নির্দেশাবলী প্রদান করে।
Wear OS-এ পাসকি
ডেভেলপারদের তাদের Wear OS ক্রেডেনশিয়াল ম্যানেজার বাস্তবায়নে পাসকি প্রয়োগ করার জন্য দৃঢ়ভাবে উৎসাহিত করা হয়। পাসকিগুলি শেষ-ব্যবহারকারীর প্রমাণীকরণের জন্য নতুন শিল্প মান, এবং তারা ব্যবহারকারীদের জন্য বেশ কয়েকটি উল্লেখযোগ্য সুবিধা বহন করে।
পাসকিগুলি সহজ
- ব্যবহারকারীরা সাইন ইন করার জন্য একটি অ্যাকাউন্ট নির্বাচন করতে পারেন। তাদের একটি ব্যবহারকারীর নাম টাইপ করতে হবে না.
- ব্যবহারকারীরা ডিভাইসের স্ক্রিন লক ব্যবহার করে প্রমাণীকরণ করতে পারেন।
- একটি পাসকি তৈরি এবং নিবন্ধিত হওয়ার পরে, ব্যবহারকারী নির্বিঘ্নে একটি নতুন ডিভাইসে স্যুইচ করতে পারেন এবং পুনরায় নথিভুক্ত করার প্রয়োজন ছাড়াই অবিলম্বে এটি ব্যবহার করতে পারেন।
পাসকিগুলি নিরাপদ
- ডেভেলপাররা পাসওয়ার্ড সেভ করার পরিবর্তে সার্ভারে শুধুমাত্র একটি পাবলিক কী সেভ করে, মানে খারাপ অভিনেতার জন্য সার্ভারে হ্যাক করার মূল্য অনেক কম, এবং লঙ্ঘনের ঘটনা ঘটলে পরিষ্কার করার জন্য অনেক কম মূল্য।
- পাসকি ফিশিং-প্রতিরোধী সুরক্ষা প্রদান করে। পাসকিগুলি শুধুমাত্র তাদের নিবন্ধিত ওয়েবসাইট এবং অ্যাপগুলিতে কাজ করে; কোনো ব্যবহারকারীকে প্রতারণামূলক সাইটে প্রমাণীকরণে প্রতারিত করা যাবে না কারণ ব্রাউজার বা OS যাচাইকরণ পরিচালনা করে।
- পাসকিগুলি এসএমএস পাঠানোর প্রয়োজনীয়তা হ্রাস করে, প্রমাণীকরণকে আরও সাশ্রয়ী করে তোলে।
পাসকি প্রয়োগ করুন
সমস্ত বাস্তবায়ন প্রকারের জন্য সেটআপ এবং নির্দেশিকা অন্তর্ভুক্ত।
সেটআপ
আপনার অ্যাপ্লিকেশন মডিউলের build.gradle ফাইলে লক্ষ্য API স্তর 35 এ সেট করুন:
android { defaultConfig { targetSdkVersion(35) } }
androidx.credentials
রিলিজ রেফারেন্স থেকে সর্বশেষ স্থিতিশীল সংস্করণ ব্যবহার করে আপনার অ্যাপ বা মডিউলের জন্য build.gradle ফাইলে নিম্নলিখিত লাইন যোগ করুন।androidx.credentials:credentials:1.5.0 androidx.credentials:credentials-play-services-auth:1.5.0
অন্তর্নির্মিত প্রমাণীকরণ পদ্ধতি
যেহেতু ক্রেডেনশিয়াল ম্যানেজার একটি ইউনিফাইড এপিআই, তাই Wear OS এর বাস্তবায়নের ধাপগুলি অন্য যেকোনো ডিভাইসের মতোই।
শুরু করতে এবং পাসকি এবং পাসওয়ার্ড সমর্থন বাস্তবায়ন করতে মোবাইল দিকনির্দেশগুলি ব্যবহার করুন৷
ক্রেডেনশিয়াল ম্যানেজারে Google সমর্থনের সাথে সাইন ইন যোগ করার পদক্ষেপগুলি মোবাইল ডেভেলপমেন্টের দিকে প্রস্তুত, কিন্তু পদক্ষেপগুলি Wear OS-এ একই। এই ক্ষেত্রে বিশেষ বিবেচনার জন্য Google এর সাথে লিগ্যাসি সাইন ইন করুন , বিভাগটি দেখুন।
মনে রাখবেন, যেহেতু Wear OS-এ শংসাপত্র তৈরি করা যাবে না, তাই আপনাকে মোবাইল নির্দেশাবলীতে উল্লেখিত শংসাপত্র তৈরির পদ্ধতিগুলি প্রয়োগ করতে হবে না।
ব্যাকআপ প্রমাণীকরণ পদ্ধতি
Wear OS অ্যাপের জন্য আরও দুটি গ্রহণযোগ্য প্রমাণীকরণ পদ্ধতি রয়েছে: OAuth 2.0 (হয়তো বৈকল্পিক), এবং মোবাইল প্রমাণীকরণ টোকেন ডেটা লেয়ার শেয়ারিং। যদিও এই পদ্ধতিগুলির ক্রেডেনশিয়াল ম্যানেজার এপিআই-তে ইন্টিগ্রেশন পয়েন্ট নেই, ব্যবহারকারীরা ক্রেডেনশিয়াল ম্যানেজার স্ক্রীনটি খারিজ করলে সেগুলিকে আপনার শংসাপত্র ম্যানেজারের UX ফ্লোতে ফলব্যাক হিসাবে অন্তর্ভুক্ত করা যেতে পারে।
ক্রেডেনশিয়াল ম্যানেজার স্ক্রীন খারিজ করার ব্যবহারকারীর ক্রিয়া পরিচালনা করতে, আপনার GetCredential
লজিকের অংশ হিসাবে একটি NoCredentialException
ধরুন এবং আপনার নিজস্ব কাস্টম auth UI এ নেভিগেট করুন৷
yourCoroutineScope.launch {
try {
val response = credentialManager.getCredential(activity, request)
signInWithCredential(response.credential)
} catch (e: GetCredentialCancellationException) {
navigateToFallbackAuthMethods()
}
}
আপনার কাস্টম auth UI তারপর সাইন-ইন UX গাইডে বর্ণিত অন্য যে কোনো গ্রহণযোগ্য প্রমাণীকরণ পদ্ধতি প্রদান করতে পারে।
ডাটা লেয়ার টোকেন শেয়ারিং
ফোন সহচর অ্যাপ পরিধানযোগ্য ডেটা লেয়ার API ব্যবহার করে Wear OS অ্যাপে প্রমাণীকরণ ডেটা নিরাপদে স্থানান্তর করতে পারে। বার্তা বা ডেটা আইটেম হিসাবে শংসাপত্র স্থানান্তর করুন।
এই ধরনের প্রমাণীকরণের জন্য সাধারণত ব্যবহারকারীর কাছ থেকে কোনো পদক্ষেপের প্রয়োজন হয় না। যাইহোক, ব্যবহারকারীকে না জানিয়ে প্রমাণীকরণ করা এড়িয়ে চলুন যে তারা সাইন ইন করা হচ্ছে। আপনি একটি বাতিলযোগ্য স্ক্রীন ব্যবহার করে ব্যবহারকারীকে জানাতে পারেন যা তাদের দেখায় যে তাদের অ্যাকাউন্ট মোবাইল থেকে স্থানান্তর করা হচ্ছে।
গুরুত্বপূর্ণ: আপনার Wear OS অ্যাপটি অবশ্যই অন্য একটি প্রমাণীকরণ পদ্ধতি অফার করবে, কারণ এই বিকল্পটি শুধুমাত্র Android-পেয়ার করা ঘড়িতে কাজ করে যখন সংশ্লিষ্ট মোবাইল অ্যাপ ইনস্টল করা থাকে। যেসব ব্যবহারকারীদের কাছে সংশ্লিষ্ট মোবাইল অ্যাপ নেই বা যাদের Wear OS ডিভাইস একটি iOS ডিভাইসের সাথে পেয়ার করা আছে তাদের জন্য একটি বিকল্প প্রমাণীকরণ পদ্ধতি প্রদান করুন।
মোবাইল অ্যাপ থেকে ডেটা লেয়ার ব্যবহার করে টোকেন পাস করুন, যেমনটি নিম্নলিখিত উদাহরণে দেখানো হয়েছে:
val token = "..." // Auth token to transmit to the Wear OS 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)
Wear OS অ্যাপে ডেটা পরিবর্তনের ইভেন্টগুলি শুনুন, যেমনটি নিম্নলিখিত উদাহরণে দেখানো হয়েছে:
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 an interstitial screen to notify the user that
// they're 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) এর জন্য প্রুফ কী সহ অনুমোদন কোড অনুদান
- ডিভাইস অনুমোদন অনুদান (DAG), যেমন RFC 8628- এ সংজ্ঞায়িত করা হয়েছে
কোড এক্সচেঞ্জের জন্য প্রমাণ কী (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 any errors.
}
}
)
এই অনুরোধটি সহচর অ্যাপে একটি কল ট্রিগার করে, যা ব্যবহারকারীর মোবাইল ফোনে একটি ওয়েব ব্রাউজারে একটি অনুমোদন 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 যাচাই করে এবং আপনার Wear OS অ্যাপে প্রতিক্রিয়া রিলে করে। onAuthorizationResponse
API ব্যবহার করে।
ঘড়ি অ্যাপ তারপর একটি অ্যাক্সেস টোকেনের জন্য অনুমোদন কোড বিনিময় করতে পারে।
ডিভাইস অনুমোদন অনুদান
ডিভাইস অনুমোদন অনুদান ব্যবহার করার সময়, ব্যবহারকারী অন্য ডিভাইসে যাচাইকরণ 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 অ্যাপ থাকে, তাহলে টোকেন অনুমোদন করার জন্য ব্রাউজারের উপর নির্ভর না করে আপনার অ্যাপে এই অভিপ্রায়টি আটকাতে সর্বজনীন লিঙ্কগুলি ব্যবহার করুন৷
উত্তরাধিকার থেকে ট্রানজিশন দূরে Google এর সাথে সাইন ইন করুন৷
ক্রেডেনশিয়াল ম্যানেজারের কাছে Google বোতামের সাথে সাইন ইন করার জন্য একটি ডেডিকেটেড ইন্টিগ্রেশন পয়েন্ট রয়েছে৷ পূর্বে, এই বোতামটি একটি অ্যাপের প্রমাণীকরণ UX-এ যেকোনো জায়গায় যোগ করা যেত, কিন্তু ক্রেডেনশিয়াল ম্যানেজারে এটি অন্তর্ভুক্ত করার সাথে সাথে, পুরানো বিকল্পটি এখন অবমূল্যায়িত হয়েছে।
// Define a basic SDK check.
fun isCredentialManagerAvailable(): Boolean {
return android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.VANILLA_ICE_CREAM
}
// Elsewhere in the code, use it to selectively disable the legacy option.
Button(
onClick = {
if (isCredentialManagerAvailable()) {
Log.w(TAG, "Devices on API level 35 or higher should use
Credential Manager for Sign in with Google")
} else {
navigateToSignInWithGoogle()
}},
enabled = !isCredentialManagerAvailable(),
label = { Text(text = stringResource(R.string.sign_in_with_google)) },
secondaryLabel = { Text(text = "Disabled on API level 35+")
}
)