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

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

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

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

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

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

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

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

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

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

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

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

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

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

  1. হ্যান্ডেল NSUserActivityTypeBrowsingWeb নিজের অ্যাপ্লিকেশনটি প্রতিনিধি হবে।
  2. ক্যাপচার redirect_uri এবং state পরামিতি URL থেকে পরে ব্যবহার করতে।
  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 ): গুগল client_id আপনার অ্যাপ অধীনে নিবন্ধিত যে।
  • scope ( List of String ): শূণ্যস্থান দ্বারা বিভাজিত, সুযোগ অনুরোধ তালিকা।
  • state ( String ): Google দ্বারা ব্যবহৃত একটি আপাতত তা যাচাই করতে অনুমোদন ফলাফলের গুগলের বিদায়ী অনুরোধের প্রতিক্রিয়া হয়।
  • redirect_uri ( String ): Google এর সার্বজনীন লিঙ্ক। Google অ্যাপ খুলতে এবং ফলাফল পাস করতে "ফ্লিপ" ইউআরআই।

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

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

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

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

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

সব ত্রুটির প্রকার জন্য, আপনি উল্লেখিত প্রতিক্রিয়া ডেটা ফিরে আসবে REDIRECT_URI নিশ্চিত করার উপযুক্ত ফলব্যাক trigerred করা হয়।

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

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

  • 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 এবং URL দ্বারা নির্দিষ্ট redirect_uri প্যারামিটার প্রত্যাশিত মান মেলে যখন একটি অনুরোধ গৃহীত হয়। যদি ক্লায়েন্ট যাচাইকরণ ব্যর্থ হয়, ত্রুটি আসতে invalid_request করার redirect_uri