iOS के लिए ऐप्लिकेशन फ़्लिप

OAuth पर आधारित ऐप्लिकेशन फ़्लिप लिंक (ऐप्लिकेशन फ़्लिप) की मदद से, आपका iOS ऐप्लिकेशन, Google ऐप्लिकेशन से खुलता है ताकि Google ऐप्लिकेशन के उपयोगकर्ता अपना खाता आसानी से लिंक कर सकें. आपको यह बनाना होगा इस सुविधा को लागू करने के लिए, आपके iOS ऐप्लिकेशन में छोटे-छोटे कोड में बदलाव किया जाता है.

इस दस्तावेज़ में, App Flip के साथ काम करने के लिए अपने iOS ऐप्लिकेशन में बदलाव करने का तरीका बताया गया है.

सैंपल आज़माएं

App Flip ऐप्लिकेशन का नमूना iOS पर खाता लिंक करने के इंटिग्रेशन को दिखाता है, जो App Flip के साथ काम करता है. आप इस ऐप का इस्तेमाल यह पुष्टि करने के लिए कर सकते हैं कि यूनिवर्सल ऐप फ्लिप में किसी इनकमिंग ऐप्लिकेशन फ्लिप का जवाब कैसे देना है Google मोबाइल ऐप्लिकेशन से लिंक करो.

सैंपल ऐप्लिकेशन, ऐप्लिकेशन फ़्लिप टेस्ट टूल के साथ इंटिग्रेट करने के लिए पहले से कॉन्फ़िगर किया गया है iOS, इसका इस्तेमाल करके, यह पुष्टि की जा सकती है कि iOS ऐप्लिकेशन के साथ पहले, App Flip के साथ इंटिग्रेशन हुआ है या नहीं कॉन्फ़िगर करके आपको खाता लिंक करना है. यह ऐप्लिकेशन यूनिवर्सल लिंक को सिम्युलेट करता है ऐप फ़्लिप चालू होने पर, Google मोबाइल ऐप्लिकेशन से ट्रिगर होती हैं.

यह कैसे काम करता है

जब Google ऐप्लिकेशन और आपका ऐप्लिकेशन, फ़्लो के लिए इन चरणों को पूरा करता है, तो ऐप्लिकेशन फ़्लिप होता है:

  1. Google ऐप्लिकेशन आपके ऐप्लिकेशन के यूनिवर्सल लिंक को खोलने की कोशिश करता है. यह इस्तेमाल किया जा सकता है अगर आपका ऐप्लिकेशन उपयोगकर्ता के डिवाइस पर इंस्टॉल है और यूनिवर्सल लिंक. ज़्यादा जानकारी के लिए, यूनिवर्सल लिंक के साथ काम करना देखें.

  2. आपका ऐप्लिकेशन जांच करता है कि client_id और redirect_uri पैरामीटर को कोड में बदला गया है या नहीं जो Google यूनिवर्सल लिंक की उम्मीद के मुताबिक हो.

  3. आपका ऐप्लिकेशन, आपके OAuth2 सर्वर से ऑथराइज़ेशन कोड का अनुरोध करता है. आखिर में है, तो आपका ऐप्लिकेशन Google ऐप्लिकेशन. ऐसा करने के लिए, यह "जोड़ा गया" के साथ Google का यूनिवर्सल लिंक खोलता है पैरामीटर सेट करने की ज़रूरत नहीं है.

  4. Google ऐप्लिकेशन, आने वाले Google यूनिवर्सल लिंक को मैनेज करता है और प्रक्रिया का बचा हुआ हिस्सा. अगर ऑथराइज़ेशन कोड दिया गया है, तो लिंकिंग जो तुरंत पूरा हो जाएगा. टोकन एक्सचेंज, सर्वर-टू-सर्वर होता है. यह एक जैसा होता है ब्राउज़र पर आधारित OAuth लिंक करने के फ़्लो में काम करता है. अगर गड़बड़ी का कोई कोड ऐसा करने पर, दूसरे विकल्पों के साथ लिंकिंग फ़्लो जारी रहता है.

App Flip की सुविधा का इस्तेमाल करने के लिए, अपने iOS ऐप्लिकेशन में बदलाव करें

ऐप्लिकेशन फ़्लिप की सुविधा के लिए, अपने iOS ऐप्लिकेशन में ये कोड बदलाव करें:

  1. अपने ऐप्लिकेशन प्रतिनिधि में NSUserActivityTypeBrowsingWeb को हैंडल करें.
  2. बाद में इस्तेमाल करने के लिए, यूआरएल से 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. पुष्टि करें कि Client-ID उम्मीद के मुताबिक वैल्यू से मेल खाता हो. इनका इस्तेमाल करें कोड सैंपल:

    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. अनुमति मिल जाने के बाद, अनुमति के साथ रीडायरेक्ट यूआरआई को कॉल करें कोड. यहां दिए गए कोड सैंपल का इस्तेमाल करें:

    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. अगर कोई गड़बड़ी हुई है, तो इसके बजाय रीडायरेक्ट यूआरआई में गड़बड़ी का नतीजा अटैच करें. यहां दिए गए कोड सैंपल का इस्तेमाल करें:

    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 का यूनिवर्सल लिंक. "फ़्लिप" खोलने के लिए यूआरआई और पास के नतीजे.

अनुमति देने का नतीजा वापस मिलने के बाद इस्तेमाल किए जाने वाले पैरामीटर:

  • code (String): अगर ऑथराइज़ेशन कोड उपलब्ध है, तो उसकी वैल्यू.
  • state (String): आने वाले यूनिवर्सल लिंक से मिली सटीक वैल्यू.

अनुमति का नतीजा न मिलने पर इस्तेमाल किए जाने वाले पैरामीटर:

  • error (String), इन वैल्यू के साथ:

    • cancelled: ठीक की जा सकने वाली एक गड़बड़ी. Google ऐप्लिकेशन, खाते की कोशिश करेगा लिंक करने के लिए, अनुमति देने वाले यूआरएल का इस्तेमाल करें. कुछ उदाहरण हैं, जब उपयोगकर्ता काम नहीं कर रहा हो का इस्तेमाल करें.
    • unrecoverable: ऐसी गड़बड़ी हुई है जिसे ठीक नहीं किया जा सकता. उदाहरण के लिए, उपयोगकर्ता किसी बंद खाते से लिंक करने की कोशिश करता है.Google ऐप्लिकेशन, खाते को लिंक करने की प्रोसेस को रद्द कर देगा.
    • invalid_request: अनुरोध के पैरामीटर अमान्य हैं या मौजूद नहीं हैं. इस गड़बड़ी को ठीक किया जा सकता है. Google ऐप्लिकेशन, अनुमति देने वाले यूआरएल का इस्तेमाल करके खाता लिंक करने की कोशिश करेगा.
    • access_denied: उपयोगकर्ता, सहमति का अनुरोध अस्वीकार कर देता है. इस गड़बड़ी को ठीक नहीं किया जा सकता; Google ऐप्लिकेशन लिंक करने की प्रोसेस रद्द करता है.
  • error_description (String, ज़रूरी नहीं): उपयोगकर्ता को समझने में आसान गड़बड़ी का मैसेज.

हर तरह की गड़बड़ी के लिए, आपको रिस्पॉन्स डेटा को बताए गए तरीके से ही लौटाना होगा REDIRECT_URI ताकि यह पक्का किया जा सके कि सही फ़ॉलबैक को ट्रिगर किया गया है.

App Flip के साथ काम करने के लिए, अपने ऑथराइज़ेशन एंडपॉइंट में बदलाव करें

Google के App Flip रीडायरेक्ट यूआरएल का इस्तेमाल करके, अनुरोधों को स्वीकार करने के लिए अपने प्लैटफ़ॉर्म को कॉन्फ़िगर करें:

  • Google Home ऐप्लिकेशन
    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
    
    अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
  • Google Assistant ऐप्लिकेशन
    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 पैरामीटर से तय किए गए यूआरएल की जांच करें अनुरोध मिलने पर, अनुमानित वैल्यू से मैच करती है. अगर क्लाइंट की पुष्टि विफल होता है, तो redirect_uri में गड़बड़ी invalid_request वापस करें.