লিঙ্ক করা অ্যাকাউন্টে সাইন-ইন করার সুবিধা, সেইসব ব্যবহারকারীর জন্য Google-এর মাধ্যমে এক ট্যাপে সাইন-ইন করার সুবিধা চালু করে, যাদের Google অ্যাকাউন্ট আগে থেকেই আপনার পরিষেবার সাথে লিঙ্ক করা আছে। এটি ব্যবহারকারীদের অভিজ্ঞতা উন্নত করে কারণ তারা ব্যবহারকারীর নাম এবং পাসওয়ার্ড আবার না লিখে, এক ক্লিকেই সাইন-ইন করতে পারেন। এছাড়াও, এটি আপনার পরিষেবায় ব্যবহারকারীর ডুপ্লিকেট অ্যাকাউন্ট তৈরি করার সম্ভাবনা কমায়।
Android-এর জন্য এক-ট্যাপে সাইন-ইন ফ্লোয়ের অংশ হিসেবে লিঙ্ক করা অ্যাকাউন্টে সাইন-ইন করার সুবিধা উপলভ্য। এর অর্থ হল, আপনার অ্যাপে আগে থেকেই 'এক ট্যাপ' ফিচার চালু থাকলে, আপনাকে আলাদা লাইব্রেরি ইমপোর্ট করতে হবে না।
এই ডকুমেন্ট থেকে আপনি জানতে পারবেন যে লিঙ্ক করা অ্যাকাউন্টে সাইন-ইন করার সুবিধা দিতে আপনার Android অ্যাপ কীভাবে পরিবর্তন করবেন।
এটি কীভাবে কাজ করে
- আপনি 'এক ট্যাপে সাইন-ইন' ফ্লো চলাকালীন লিঙ্ক করা অ্যাকাউন্ট দেখানোর বিকল্প বেছে নিয়েছেন।
- ব্যবহারকারী Google-এ সাইন-ইন করে থাকলে এবং তার Google অ্যাকাউন্ট আপনার পরিষেবার অ্যাকাউন্টের সাথে লিঙ্ক করে থাকলে, লিঙ্ক করা অ্যাকাউন্টের জন্য একটি আইডি টোকেন ফেরত দেওয়া হবে।
- ব্যবহারকারীকে লিঙ্ক করা অ্যাকাউন্টের মাধ্যমে আপনার পরিষেবায় সাইন-ইন করার বিকল্প সহ এক-ট্যাপে সাইন-ইন করার প্রম্পট দেখানো হয়।
- ব্যবহারকারী লিঙ্ক করা অ্যাকাউন্ট ব্যবহার করা চালিয়ে যেতে চাইলে, ব্যবহারকারীর আইডি টোকেন আপনার অ্যাপে ফেরত পাঠানো হয়। লগ-ইন করা ব্যবহারকারীকে শনাক্ত করতে, আপনি এটিকে ধাপ ২-এ আপনার সার্ভারে পাঠানো টোকেনের সাথে মিলিয়ে দেখেন।
সেট-আপ করুন
লিঙ্ক করা অ্যাকাউন্ট সাইন-ইন সেট-আপ করতে, আপনার ডেভেলপমেন্ট এনভায়রনমেন্ট ও অ্যাপ কনফিগার করুন।
আপনার ডেভেলপমেন্ট এনভায়রনমেন্ট সেট-আপ করুন
আপনার ডেভেলপমেন্ট হোস্টে লেটেস্ট Google Play পরিষেবা পান:
- Android SDK Manager খুলুন।
SDK টুল-এর মধ্যে Google Play পরিষেবা খুঁজুন।
এইসব প্যাকেজের স্ট্যাটাস 'ইনস্টল করা হয়েছে' হিসেবে দেখানো না হলে, দুটিই বেছে নিয়ে প্যাকেজ ইনস্টল করুন বিকল্পে ক্লিক করুন।
আপনার অ্যাপ কনফিগার করুন
আপনার প্রোজেক্ট-লেভেল
build.gradleফাইলে,buildscriptএবংallprojects, উভয় বিভাগেই Google-এর Maven রিপোজিটরি অন্তর্ভুক্ত করুন।buildscript { repositories { google() } } allprojects { repositories { google() } }আপনার মডিউলের অ্যাপ-লেভেল গ্রেডেল ফাইলে "Google-এর সাথে লিঙ্ক করুন" API-এর জন্য ডিপেন্ডেন্সি যোগ করুন, যা সাধারণত
app/build.gradle:dependencies { implementation 'com.google.android.gms:play-services-auth:21.3.0' }
লিঙ্ক করা অ্যাকাউন্ট সাইন-ইন ফিচার কাজ করার জন্য আপনার Android অ্যাপে পরিবর্তন করুন
লিঙ্ক করা অ্যাকাউন্ট সাইন-ইন ফ্লোয়ের শেষে, আপনার অ্যাপে একটি আইডি টোকেন ফেরত পাঠানো হয়। ব্যবহারকারীকে সাইন-ইন করানোর আগে আইডি টোকেনের ইন্টিগ্রিটি যাচাই করা উচিত।
নিম্নলিখিত কোড স্যাম্পেল থেকে আইডি টোকেন ফিরিয়ে আনা, যাচাই করা এবং তারপরে ব্যবহারকারীকে সাইন-ইন করানোর ধাপগুলি সম্পর্কে বিস্তারিত তথ্য পাওয়া যাবে।
সাইন-ইন ইনটেন্টের ফলাফল পেতে একটি অ্যাক্টিভিটি তৈরি করুন
Kotlin
private val activityResultLauncher = registerForActivityResult( ActivityResultContracts.StartIntentSenderForResult()) { result -> if (result.resultCode == RESULT_OK) { try { val signInCredentials = Identity.signInClient(this) .signInCredentialFromIntent(result.data) // Review the Verify the integrity of the ID token section for // details on how to verify the ID token verifyIdToken(signInCredential.googleIdToken) } catch (e: ApiException) { Log.e(TAG, "Sign-in failed with error code:", e) } } else { Log.e(TAG, "Sign-in failed") } }জাভা
private final ActivityResultLauncher<IntentSenderResult> activityResultLauncher = registerForActivityResult( new ActivityResultContracts.StartIntentSenderForResult(), result -> { If (result.getResultCode() == RESULT_OK) { try { SignInCredential signInCredential = Identity.getSignInClient(this) .getSignInCredentialFromIntent(result.getData()); verifyIdToken(signInCredential.getGoogleIdToken()); } catch (e: ApiException ) { Log.e(TAG, "Sign-in failed with error:", e) } } else { Log.e(TAG, "Sign-in failed") } });সাইন-ইন করার অনুরোধ তৈরি করুন
Kotlin
private val tokenRequestOptions = GoogleIdTokenRequestOptions.Builder() .supported(true) // Your server's client ID, not your Android client ID. .serverClientId(getString("your-server-client-id") .filterByAuthorizedAccounts(true) .associateLinkedAccounts("service-id-of-and-defined-by-developer", scopes) .build()জাভা
private final GoogleIdTokenRequestOptions tokenRequestOptions = GoogleIdTokenRequestOptions.Builder() .setSupported(true) .setServerClientId("your-service-client-id") .setFilterByAuthorizedAccounts(true) .associateLinkedAccounts("service-id-of-and-defined-by-developer", scopes) .build()সাইন-ইন করার বাকি থাকা ইনটেন্ট চালু করুন
Kotlin
Identity.signInClient(this) .beginSignIn( BeginSignInRequest.Builder() .googleIdTokenRequestOptions(tokenRequestOptions) .build()) .addOnSuccessListener{result -> activityResultLauncher.launch(result.pendingIntent.intentSender) } .addOnFailureListener {e -> Log.e(TAG, "Sign-in failed because:", e) }জাভা
Identity.getSignInClient(this) .beginSignIn( BeginSignInRequest.Builder() .setGoogleIdTokenRequestOptions(tokenRequestOptions) .build()) .addOnSuccessListener(result -> { activityResultLauncher.launch( result.getPendingIntent().getIntentSender()); }) .addOnFailureListener(e -> { Log.e(TAG, "Sign-in failed because:", e); });
আইডি টোকেনের ইন্টিগ্রিটি যাচাই করুন
Google API ক্লায়েন্ট লাইব্রেরি ব্যবহার করা
প্রোডাকশন এনভায়রনমেন্টে Google ID টোকেন যাচাই করার জন্য Java Google API ক্লায়েন্ট লাইব্রেরি ব্যবহার করা হল প্রস্তাবিত পদ্ধতি।
জাভা
import com.google.api.client.googleapis.auth.oauth2.GoogleIdToken;
import com.google.api.client.googleapis.auth.oauth2.GoogleIdToken.Payload;
import com.google.api.client.googleapis.auth.oauth2.GoogleIdTokenVerifier;
...
GoogleIdTokenVerifier verifier = new GoogleIdTokenVerifier.Builder(transport, jsonFactory)
// Specify the CLIENT_ID of the app that accesses the backend:
.setAudience(Collections.singletonList(CLIENT_ID))
// Or, if multiple clients access the backend:
//.setAudience(Arrays.asList(CLIENT_ID_1, CLIENT_ID_2, CLIENT_ID_3))
.build();
// (Receive idTokenString by HTTPS POST)
GoogleIdToken idToken = verifier.verify(idTokenString);
if (idToken != null) {
Payload payload = idToken.getPayload();
// Print user identifier
String userId = payload.getSubject();
System.out.println("User ID: " + userId);
// Get profile information from payload
String email = payload.getEmail();
boolean emailVerified = Boolean.valueOf(payload.getEmailVerified());
String name = (String) payload.get("name");
String pictureUrl = (String) payload.get("picture");
String locale = (String) payload.get("locale");
String familyName = (String) payload.get("family_name");
String givenName = (String) payload.get("given_name");
// Use or store profile information
// ...
} else {
System.out.println("Invalid ID token.");
}
GoogleIdTokenVerifier.verify() পদ্ধতিটি JWT স্বাক্ষর, aud দাবি, iss দাবি এবং exp দাবি যাচাই করে।
ID টোকেনটি Google Workspace বা Cloud
অর্গানাইজেশন অ্যাকাউন্টকে উপস্থাপন করে কিনা তা যাচাই করতে হলে, Payload.getHostedDomain() পদ্ধতির মাধ্যমে ফেরত আসা ডোমেন নাম চেক করে
আপনি hd দাবি যাচাই করতে পারেন।