iOS এর জন্য অ্যাপ ফ্লিপ

OAuth-ভিত্তিক অ্যাপ ফ্লিপ লিঙ্কিং (অ্যাপ ফ্লিপ) Google অ্যাপ ব্যবহারকারীকে তাদের অ্যাকাউন্ট আরও সহজে লিঙ্ক করতে সাহায্য করার জন্য একটি Google অ্যাপ থেকে আপনার iOS অ্যাপ খোলে। এই বৈশিষ্ট্যটি বাস্তবায়ন করতে আপনাকে আপনার iOS অ্যাপে ছোটখাটো কোড পরিবর্তন করতে হবে।

এই নথিতে, আপনি অ্যাপ ফ্লিপ সমর্থন করার জন্য আপনার iOS অ্যাপটি কীভাবে পরিবর্তন করবেন তা শিখবেন।

নমুনা চেষ্টা করুন

অ্যাপ ফ্লিপ নমুনা অ্যাপটি iOS-এ একটি অ্যাকাউন্ট লিঙ্কিং ইন্টিগ্রেশন প্রদর্শন করে যা অ্যাপ ফ্লিপ-সামঞ্জস্যপূর্ণ। আপনি Google মোবাইল অ্যাপস থেকে একটি ইনকামিং অ্যাপ ফ্লিপ সার্বজনীন লিঙ্কে কীভাবে প্রতিক্রিয়া জানাবেন তা যাচাই করতে এই অ্যাপটি ব্যবহার করতে পারেন।

নমুনা অ্যাপটি iOS এর জন্য অ্যাপ ফ্লিপ টেস্ট টুলের সাথে একীভূত করার জন্য পূর্ব-কনফিগার করা হয়েছে, যা আপনি Google-এর সাথে অ্যাকাউন্ট লিঙ্কিং কনফিগার করার আগে অ্যাপ ফ্লিপের সাথে আপনার iOS অ্যাপের একীকরণ যাচাই করতে ব্যবহার করতে পারেন। যখন অ্যাপ ফ্লিপ সক্ষম থাকে তখন এই অ্যাপটি Google মোবাইল অ্যাপ দ্বারা ট্রিগার করা সার্বজনীন লিঙ্কের অনুকরণ করে।

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

অ্যাপ্লিকেশান ফ্লিপ হওয়ার সময় Google অ্যাপ এবং আপনার অ্যাপ যে প্রবাহের পদক্ষেপগুলি নেয় তা নিচে দেওয়া হল:

  1. Google অ্যাপ আপনার অ্যাপের সার্বজনীন লিঙ্ক খোলার চেষ্টা করে। এটি আপনার অ্যাপ খুলতে সক্ষম যদি এটি ব্যবহারকারীর ডিভাইসে ইনস্টল করা থাকে এবং সার্বজনীন লিঙ্কের সাথে যুক্ত থাকে। বিস্তারিত জানার জন্য সাপোর্টিং ইউনিভার্সাল লিঙ্ক দেখুন।

  2. আপনার অ্যাপ চেক করে যে আগত URL-এ এনকোড করা client_id এবং redirect_uri প্যারামিটার প্রত্যাশিত Google ইউনিভার্সাল লিঙ্কের সাথে মেলে।

  3. আপনার অ্যাপ আপনার OAuth2 সার্ভার থেকে একটি অনুমোদন কোড অনুরোধ করে। এই প্রবাহের শেষে, আপনার অ্যাপ Google অ্যাপে একটি অনুমোদন কোড বা একটি ত্রুটি ফেরত দেয়। এটি করার জন্য, এটি অনুমোদন কোড বা ত্রুটির জন্য সংযুক্ত প্যারামিটার সহ Google এর সার্বজনীন লিঙ্কটি খোলে।

  4. Google অ্যাপ ইনকামিং Google সার্বজনীন লিঙ্ক পরিচালনা করে এবং বাকি প্রবাহের সাথে চলতে থাকে। যদি একটি অনুমোদন কোড প্রদান করা হয়, লিঙ্কিং অবিলম্বে সম্পন্ন হয়. টোকেন এক্সচেঞ্জ সার্ভার-টু-সার্ভারে হয়, একইভাবে ব্রাউজার-ভিত্তিক OAuth লিঙ্কিং প্রবাহে ঘটে। যদি একটি ত্রুটি কোড ফেরত দেওয়া হয়, লিঙ্কিং প্রবাহ বিকল্প বিকল্পগুলির সাথে চলতে থাকে।

অ্যাপ ফ্লিপ সমর্থন করতে আপনার iOS অ্যাপ পরিবর্তন করুন

অ্যাপ ফ্লিপ সমর্থন করতে, আপনার iOS অ্যাপে নিম্নলিখিত কোড পরিবর্তন করুন:

  1. আপনার অ্যাপ ডেলিগেটে NSUserActivityTypeBrowsingWeb পরিচালনা করুন।
  2. পরে ব্যবহার করার জন্য URL থেকে redirect_uri এবং state প্যারামিটার ক্যাপচার করুন।
  3. redirect_uri এই ফর্ম্যাটের সাথে মেলে কিনা দেখুন:
    https://oauth-redirect.googleusercontent.com/a/GOOGLE_APP_BUNDLE_ID
    https://oauth-redirect-sandbox.googleusercontent.com/a/GOOGLE_APP_BUNDLE_ID
  4. যাচাই করুন যে ক্লায়েন্ট আইডি প্রত্যাশিত মানের সাথে মেলে। নিম্নলিখিত কোড নমুনা ব্যবহার করুন:

    func application(_ application: UIApplication,
                     continue userActivity: NSUserActivity,
                     restorationHandler: @escaping ([Any]?) -> Void) -> Bool
    {
        guard userActivity.activityType == NSUserActivityTypeBrowsingWeb,
            let incomingURL = userActivity.webpageURL,
            let components = URLComponents(url: incomingURL, resolvingAgainstBaseURL: false),
            let params = components.queryItems else {
                return false
        }
    
        if let clientId = params.filter({$0.name == "client_id"}).first?.value,
            let state = params.filter({$0.name == "state"}).first?.value,
            let redirectUri = params.filter({$0.name == "redirect_uri"}).first?.value {
    
            // Save the redirect_uri and state for later...
    
            // Verify the client id
            return (clientId == GOOGLE_CLIENT_ID)
        } else {
            // Missing required parameters
            return false
        }
    }
    
  5. সফল অনুমোদনের পর, অনুমোদন কোড সহ রিডাইরেক্ট URI-তে কল করুন। নিম্নলিখিত কোড নমুনা ব্যবহার করুন:

    func returnAuthCode(code: String, state: String, redirectUri: String) {
        var redirectURL = URL(string: redirectUri)
        var components = URLComponents(url: redirectURL, resolvingAgainstBaseURL: false)
    
        // Return the authorization code and original state
        let paramAuthCode = URLQueryItem(name: "code", value: code)
        let paramState = URLQueryItem(name: "state", value: state)
        components?.queryItems = [paramAuthCode, paramState]
        if let resultURL = components?.url {
            UIApplication.shared.open(
                resultURL,
                options: [UIApplicationOpenURLOptionUniversalLinksOnly : true],
                completionHandler: nil)
        }
    }
    
  6. যদি একটি ত্রুটি ঘটেছে, তার পরিবর্তে একটি ত্রুটির ফলাফল পুনর্নির্দেশ URI-তে সংযুক্ত করুন৷ নিম্নলিখিত কোড নমুনা ব্যবহার করুন:

    func returnError(redirectUri: String) {
        var redirectURL = URL(string: redirectUri)
        var components = URLComponents(url: redirectURL, resolvingAgainstBaseURL: false)
    
        // Return the authorization code and original state
        let paramError = URLQueryItem(name: "error", value: "invalid_request")
        let paramDescription = URLQueryItem(name: "error_description", value: "Invalid Request")
        components?.queryItems = [paramError, paramDescription]
        if let resultURL = components?.url {
            UIApplication.shared.open(
                resultURL,
                options: [UIApplicationOpenURLOptionUniversalLinksOnly : true],
                completionHandler: nil)
        }
    }
    

Google অ্যাপ খোলার সময়, আপনার অ্যাপের সার্বজনীন লিঙ্কে নিম্নলিখিত ক্যোয়ারী প্যারামিটারগুলি অন্তর্ভুক্ত থাকে:

  • client_id ( String ): Google client_id যেটি আপনার অ্যাপের অধীনে নিবন্ধিত।
  • scope ( List of String ): অনুরোধ করা স্থান-বিচ্ছিন্ন স্কোপের একটি তালিকা।
  • state ( String ): অনুমোদনের ফলাফল Google এর বহির্গামী অনুরোধের প্রতিক্রিয়া হিসাবে যাচাই করতে Google দ্বারা ব্যবহৃত একটি ননস৷
  • redirect_uri ( String ): Google এর সার্বজনীন লিঙ্ক। Google অ্যাপ খুলতে এবং ফলাফল পাস করতে "ফ্লিপ" ইউআরআই।

অনুমোদনের ফলাফল সফলভাবে ফেরত দিলে ব্যবহৃত পরামিতি:

  • code ( String ): অনুমোদন কোডের মান, যদি উপলব্ধ থাকে।
  • state ( String ): ইনকামিং সার্বজনীন লিঙ্ক থেকে প্রাপ্ত সঠিক মান।

অনুমোদনের ফলাফল অসফলভাবে ফেরত গেলে ব্যবহৃত পরামিতি:

  • error ( String ), নিম্নলিখিত মান সহ:

    • cancelled : একটি পুনরুদ্ধারযোগ্য ত্রুটি। Google অ্যাপ অনুমোদন URL ব্যবহার করে অ্যাকাউন্ট লিঙ্ক করার চেষ্টা করবে। কিছু উদাহরণ হল ব্যবহারকারী সাইন ইন করতে ব্যর্থ হচ্ছেন, একটি ডিভাইস অফলাইনে আছে বা সংযোগের সময় শেষ হচ্ছে।
    • unrecoverable : একটি unrecoverable ত্রুটি. উদাহরণস্বরূপ, ব্যবহারকারী একটি অক্ষম অ্যাকাউন্টের সাথে লিঙ্ক করার চেষ্টা করে৷ Google অ্যাপ অ্যাকাউন্ট লিঙ্ক করা বাতিল করবে৷
    • invalid_request : অনুরোধের প্যারামিটারগুলি অবৈধ বা অনুপস্থিত। এটি একটি পুনরুদ্ধারযোগ্য ত্রুটি৷ Google অ্যাপ অনুমোদন URL ব্যবহার করে অ্যাকাউন্ট লিঙ্ক করার চেষ্টা করবে।
    • access_denied : ব্যবহারকারী সম্মতির অনুরোধ প্রত্যাখ্যান করে। এটি একটি অ-পুনরুদ্ধারযোগ্য ত্রুটি; Google অ্যাপ লিঙ্ক করা বন্ধ করে দেয়।
  • error_description ( String , ঐচ্ছিক): একটি ব্যবহারকারী-বান্ধব ত্রুটি বার্তা।

সমস্ত ত্রুটির প্রকারের জন্য, যথাযথ ফলব্যাক ট্রিগার হয়েছে তা নিশ্চিত করতে আপনাকে অবশ্যই নির্দিষ্ট REDIRECT_URI এ প্রতিক্রিয়া ডেটা ফেরত দিতে হবে।

অ্যাপ ফ্লিপ সমর্থন করতে আপনার অনুমোদনের শেষ পয়েন্ট পরিবর্তন করুন

Google-এর অ্যাপ ফ্লিপ রিডাইরেক্ট ইউআরএল ব্যবহার করে অনুরোধ গ্রহণ করতে আপনার প্ল্যাটফর্ম কনফিগার করুন:

  • গুগল হোম অ্যাপ
    https://oauth-redirect.googleusercontent.com/a/com.google.Chromecast.dev
    https://oauth-redirect.googleusercontent.com/a/com.google.Chromecast.enterprise
    https://oauth-redirect.googleusercontent.com/a/com.google.Chromecast
    https://oauth-redirect-sandbox.googleusercontent.com/a/com.google.Chromecast.dev
    https://oauth-redirect-sandbox.googleusercontent.com/a/com.google.Chromecast.enterprise
    https://oauth-redirect-sandbox.googleusercontent.com/a/com.google.Chromecast
    
  • গুগল সহকারী অ্যাপ
    https://oauth-redirect.googleusercontent.com/a/com.google.OPA.dev
    https://oauth-redirect.googleusercontent.com/a/com.google.OPA.enterprise
    https://oauth-redirect.googleusercontent.com/a/com.google.OPA
    https://oauth-redirect-sandbox.googleusercontent.com/a/com.google.OPA.dev
    https://oauth-redirect-sandbox.googleusercontent.com/a/com.google.OPA.enterprise
    https://oauth-redirect-sandbox.googleusercontent.com/a/com.google.OPA
    

একটি অনুরোধ প্রাপ্ত হলে client_id এবং redirect_uri প্যারামিটার দ্বারা নির্দিষ্ট করা URL প্রত্যাশিত মানগুলির সাথে মেলে তা পরীক্ষা করুন৷ যদি ক্লায়েন্ট যাচাইকরণ ব্যর্থ হয়, ত্রুটিটি invalid_request redirect_uri তে ফেরত দিন।