OAuth-ভিত্তিক অ্যাপ ফ্লিপ লিঙ্কিং (অ্যাপ ফ্লিপ) আপনার অ্যান্ড্রয়েড অ্যাপকে Google অ্যাকাউন্ট লিঙ্কিং প্রবাহে সন্নিবেশিত করে। একটি ঐতিহ্যগত অ্যাকাউন্ট লিঙ্কিং প্রবাহের জন্য ব্যবহারকারীকে ব্রাউজারে তাদের শংসাপত্রগুলি প্রবেশ করতে হবে। অ্যাপ ফ্লিপের ব্যবহার আপনার অ্যান্ড্রয়েড অ্যাপে ব্যবহারকারীর সাইন-ইন স্থগিত করে, যা আপনাকে বিদ্যমান অনুমোদনের সুবিধা নিতে দেয়। ব্যবহারকারী যদি আপনার অ্যাপে সাইন ইন করে থাকেন, তাহলে তাদের অ্যাকাউন্ট লিঙ্ক করার জন্য তাদের শংসাপত্রগুলি পুনরায় প্রবেশ করতে হবে না। আপনার অ্যান্ড্রয়েড অ্যাপে অ্যাপ ফ্লিপ প্রয়োগ করতে ন্যূনতম পরিমাণ কোড পরিবর্তন প্রয়োজন।
এই নথিতে, আপনি অ্যাপ ফ্লিপ সমর্থন করার জন্য আপনার অ্যান্ড্রয়েড অ্যাপটি কীভাবে পরিবর্তন করবেন তা শিখবেন।
নমুনা চেষ্টা করুন
অ্যাপ ফ্লিপ লিঙ্ক নমুনা অ্যাপ্লিকেশন একটি অ্যাপ ফ্লিপ সামঞ্জস্যপূর্ণ Android এর উপর ইন্টিগ্রেশন লিঙ্ক অ্যাকাউন্ট প্রমান। আপনি Google মোবাইল অ্যাপ থেকে একটি ইনকামিং অ্যাপ ফ্লিপ অভিপ্রায়ে কীভাবে প্রতিক্রিয়া জানাবেন তা যাচাই করতে এই অ্যাপটি ব্যবহার করতে পারেন।
নমুনা অ্যাপ্লিকেশন সাথে সংহত করতে কনফিগার করা হয় Android এর জন্য অ্যাপ্লিকেশন ফ্লিপ টেস্ট টুল , যা আপনি আগে আপনি কনফিগার Google এর সাথে লিঙ্ক করার অ্যাকাউন্ট অ্যাপ ফ্লিপ আপনার Android অ্যাপ্লিকেশনের ইন্টিগ্রেশন যাচাই করার জন্য ব্যবহার করতে পারেন। যখন অ্যাপ ফ্লিপ সক্রিয় থাকে তখন এই অ্যাপটি Google মোবাইল অ্যাপের দ্বারা ট্রিগার করা অভিপ্রায়কে অনুকরণ করে।
কিভাবে এটা কাজ করে
একটি অ্যাপ ফ্লিপ ইন্টিগ্রেশন করার জন্য নিম্নলিখিত পদক্ষেপগুলি প্রয়োজন:
- Google অ্যাপ্লিকেশান চেক আপনার অ্যাপ তার প্যাকেজের নাম ব্যবহার করে ডিভাইস ইনস্টল করা হবে।
- ইনস্টল করা অ্যাপটি সঠিক অ্যাপ তা যাচাই করতে Google অ্যাপটি প্যাকেজ স্বাক্ষর চেক ব্যবহার করে।
- Google অ্যাপ আপনার অ্যাপে একটি মনোনীত কার্যকলাপ শুরু করার একটি অভিপ্রায় তৈরি করে। এই অভিপ্রায় লিঙ্ক করার জন্য প্রয়োজনীয় অতিরিক্ত ডেটা অন্তর্ভুক্ত করে। অ্যান্ড্রয়েড ফ্রেমওয়ার্কের মাধ্যমে এই অভিপ্রায় সমাধান করে আপনার অ্যাপ অ্যাপ ফ্লিপ সমর্থন করে কিনা তাও এটি পরীক্ষা করে।
- আপনার অ্যাপ যাচাই করে যে অনুরোধটি Google অ্যাপ থেকে আসছে। এটি করতে, আপনার অ্যাপ প্যাকেজ স্বাক্ষর এবং প্রদত্ত ক্লায়েন্ট আইডি পরীক্ষা করে।
- আপনার অ্যাপ আপনার OAuth 2.0 সার্ভার থেকে একটি অনুমোদন কোড অনুরোধ করে। এই প্রবাহের শেষে, এটি Google অ্যাপে একটি অনুমোদন কোড বা একটি ত্রুটি ফেরত দেয়।
- Google অ্যাপ ফলাফল পুনরুদ্ধার করে এবং অ্যাকাউন্ট লিঙ্ক করা চালিয়ে যায়। যদি একটি অনুমোদন কোড প্রদান করা হয়, টোকেন বিনিময় সার্ভার থেকে সার্ভার ঘটবে, একইভাবে এটি ব্রাউজার-ভিত্তিক OAuth লিঙ্কিং প্রবাহে করে।
অ্যাপ ফ্লিপ সমর্থন করতে আপনার অ্যান্ড্রয়েড অ্যাপ পরিবর্তন করুন
অ্যাপ ফ্লিপ সমর্থন করতে, আপনার Android অ্যাপে নিম্নলিখিত কোড পরিবর্তন করুন:
একটি অ্যাড
<intent-filter>
আপনার টুAndroidManifest.xml
ফাইল একটি কর্ম স্ট্রিংটি আপনাকে অ্যাপ ফ্লিপ ইন্টেন্ট ক্ষেত্রে লেখা মানের সাথে সমরূপ সঙ্গে।<activity android:name="AuthActivity"> <!-- Handle the app flip intent --> <intent-filter> <action android:name="INTENT_ACTION_FROM_CONSOLE"/> <category android:name="android.intent.category.DEFAULT"/> </intent-filter> </activity>
কলিং অ্যাপের স্বাক্ষর যাচাই করুন।
private fun verifyFingerprint( expectedPackage: String, expectedFingerprint: String, algorithm: String ): Boolean { callingActivity?.packageName?.let { if (expectedPackage == it) { val packageInfo = packageManager.getPackageInfo(it, PackageManager.GET_SIGNATURES) val signatures = packageInfo.signatures val input = ByteArrayInputStream(signatures[0].toByteArray()) val certificateFactory = CertificateFactory.getInstance("X509") val certificate = certificateFactory.generateCertificate(input) as X509Certificate val md = MessageDigest.getInstance(algorithm) val publicKey = md.digest(certificate.encoded) val fingerprint = publicKey.joinToString(":") { "%02X".format(it) } return (expectedFingerprint == fingerprint) } } return false }
ইন্টেন্ট প্যারামিটার থেকে ক্লায়েন্ট আইডি বের করুন এবং যাচাই করুন যে ক্লায়েন্ট আইডি প্রত্যাশিত মানের সাথে মেলে।
private const val EXPECTED_CLIENT = "<client-id-from-actions-console>" private const val EXPECTED_PACKAGE = "<google-app-package-name>" private const val EXPECTED_FINGERPRINT = "<google-app-signature>" private const val ALGORITHM = "SHA-256" ... override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) val clientId = intent.getStringExtra("CLIENT_ID") if (clientId == EXPECTED_CLIENT && verifyFingerprint(EXPECTED_PACKAGE, EXPECTED_FINGERPRINT, ALGORITHM)) { // ...authorize the user... } }
সফল অনুমোদনের পরে, ফলাফলের অনুমোদন কোডটি Google-এ ফেরত দিন।
// Successful result val data = Intent().apply { putExtra("AUTHORIZATION_CODE", authCode) } setResult(Activity.RESULT_OK, data) finish()
একটি ত্রুটি ঘটেছে, পরিবর্তে একটি ত্রুটি ফলাফল ফেরত.
// Error result val error = Intent().apply { putExtra("ERROR_TYPE", 1) putExtra("ERROR_CODE", 1) putExtra("ERROR_DESCRIPTION", "Invalid Request") } setResult(-2, error) finish()
লঞ্চের উদ্দেশ্য বিষয়বস্তু
অ্যান্ড্রয়েড অভিপ্রায় যা আপনার অ্যাপটি চালু করে তাতে নিম্নলিখিত ক্ষেত্রগুলি অন্তর্ভুক্ত রয়েছে:
-
CLIENT_ID
(String
): গুগলclient_id
আপনার অ্যাপ অধীনে নিবন্ধিত। -
SCOPE
(String[]
): অনুরোধ সুযোগ তালিকা। -
REDIRECT_URI
(String
): পুনর্নির্দেশ URL টি।
প্রতিক্রিয়া তথ্য বিষয়বস্তু
ডেটা Google অ্যাপ্লিকেশানে ফিরে আপনার অ্যাপে কল করে সেট করা হয় setResult()
এই তথ্য নিম্নলিখিত অন্তর্ভুক্ত:
-
AUTHORIZATION_CODE
(String
): অনুমোদন কোড মান। -
resultCode
(int
): যোগাযোগ সাফল্য বা প্রক্রিয়ার ব্যর্থতা এবং নিম্নলিখিত মান এক লাগে:-
Activity.RESULT_OK
: সাফল্য চিহ্নিত; একটি অনুমোদন কোড ফিরে আসে। -
Activity.RESULT_CANCELLED
: ব্যবহারকারী প্রক্রিয়া বাতিল করেছে সংকেত যে। এই ক্ষেত্রে, Google অ্যাপ আপনার অনুমোদন URL ব্যবহার করে অ্যাকাউন্ট লিঙ্ক করার চেষ্টা করবে। -
-2
: নির্দেশ করে যে একটি ত্রুটি ঘটেছে। বিভিন্ন ধরণের ত্রুটি নীচে বর্ণনা করা হয়েছে।
-
-
ERROR_TYPE
(int
): ত্রুটির ধরন, নিম্নলিখিত মান এক লাগে:-
1
: আদায়যোগ্য ত্রুটি: দ্য Google অ্যাপ্লিকেশান অ্যাকাউন্ট অনুমোদন URL ব্যবহার লিঙ্ক প্রচেষ্টা করা হবে। -
2
: অপুনরুদ্ধারযোগ্য ত্রুটি: দ্য Google অ্যাপ্লিকেশান aborts লিঙ্ক অ্যাকাউন্ট। -
3
: অবৈধ বা অনুপস্থিত অনুরোধ প্যারামিটার।
-
-
ERROR_CODE
(int
): একটি পূর্ণসংখ্যা ত্রুটির প্রকৃতি উপস্থাপন করে। প্রতিটি ত্রুটি কোড মানে, পড়ুন দেখার জন্য ত্রুটি কোডের টেবিল । ERROR_DESCRIPTION
(String
, ঐচ্ছিক): মানব-পাঠযোগ্য স্থিতি বার্তা ত্রুটি বর্ণনা।
জন্য একটি মান AUTHORIZATION_CODE
যখন আশা করা হচ্ছে resultCode == Activity.RESULT_OK
। অন্যান্য সব ক্ষেত্রে, মান AUTHORIZATION_CODE
খালি করা প্রয়োজন। তাহলে resultCode == -2
, তারপর ERROR_TYPE
মান জনবহুল হবে বলে আশা করা হয়।
ত্রুটি কোডের সারণী
নীচের সারণী বিভিন্ন ত্রুটি কোড দেখায় এবং প্রতিটি একটি পুনরুদ্ধারযোগ্য বা পুনরুদ্ধারযোগ্য ত্রুটি কিনা:
ভুল সংকেত | অর্থ | পুনরুদ্ধারযোগ্য | পুনরুদ্ধারযোগ্য |
---|---|---|---|
1 | INVALID_REQUEST | ✔ | |
2 | NO_INTERNET_CONNECTION | ✔ | |
3 | OFFLINE_MODE_ACTIVE | ✔ | |
4 | CONNECTION_TIMEOUT | ✔ | |
5 | INTERNAL_ERROR | ✔ | |
6 | AUTHENTICATION_SERVICE_UNAVAILABLE | ✔ | |
8 | CLIENT_VERIFICATION_FAILED | ✔ | |
9 | INVALID_CLIENT | ✔ | |
10 | INVALID_APP_ID | ✔ | |
11 | INVALID_REQUEST | ✔ | |
12 | AUTHENTICATION_SERVICE_UNKNOWN_ERROR | ✔ | |
13 | AUTHENTICATION_DENIED_BY_USER | ✔ | |
14 | CANCELLED_BY_USER | ✔ | |
15 | FAILURE_OTHER | ✔ | |
16 | USER_AUTHENTICATION_FAILED | ✔ |
সব ত্রুটি কোডের জন্য, আপনি মাধ্যমে ত্রুটি ফলাফলের ফিরে আসবে setResult
নিশ্চিত করার উপযুক্ত ফলব্যাক trigerred করা হয়।