iOS için Uygulama Çevirme

OAuth tabanlı App Flip bağlantısı (App Flip), bir Google uygulamasından iOS uygulamanızı açar Böylece Google uygulaması kullanıcısının hesabını daha kolay bağlamasını sağlayabilirsiniz. Bağlantı kurmadan önce bu özelliği uygulamak için iOS uygulamanızda küçük kod değişiklikleri yapın.

Bu dokümanda, iOS uygulamanızı App Flip'i destekleyecek şekilde nasıl değiştireceğinizi öğreneceksiniz.

Örneği dene

App Flip örnek uygulaması , iOS'te App Flip ile uyumlu bir hesap bağlama entegrasyonunu gösterir. Gelen bir App Flip evrensel öğesine nasıl yanıt vereceğinizi doğrulamak için bu uygulamayı kullanabilirsiniz bağlantısını tıklayın.

Örnek uygulama, App Flip Test Tool ile entegrasyon için önceden yapılandırılmıştır. iOS, Bunu yapmadan önce iOS uygulamanızın App Flip ile entegrasyonunu doğrulamak için kullanabilirsiniz. Google ile hesap bağlamayı yapılandırırsınız. Bu uygulama, geçiş bağlantısını simüle eder Uygulama Döndürme etkinken Google mobil uygulamaları tarafından tetiklenir.

İşleyiş şekli

Aşağıda, Google uygulamasının ve uygulamanızın Uygulama Döndürme şu şekilde gerçekleşir:

  1. Google uygulaması, uygulamanızın evrensel bağlantısını açmaya çalışır. Şunları yapabilir: Kullanıcının cihazında yüklüyse ve evrensel bağlantı. Ayrıntılar için Geçiş Bağlantılarını Destekleme başlıklı makaleyi inceleyin.

  2. Uygulamanız, client_id ve redirect_uri parametresinin kodlanıp kodlanmadığını kontrol eder değeri, beklenen Google evrensel bağlantısıyla eşleşir.

  3. Uygulamanız, OAuth2 sunucunuzdan bir yetkilendirme kodu istiyor. Sonda uygulamanız, bu akıştan sonra bir yetkilendirme kodu veya hata mesajı döndürerek Google uygulaması. Bunu yapmak için, Google'ın evrensel bağlantısını parametrelerini girmeniz gerekir.

  4. Google uygulaması gelen Google evrensel bağlantısını işler ve bu sürecin geri kalanında devam eder. Yetkilendirme kodu sağlanırsa bağlantı tamamlanmaz. Jeton değişimi, sunucudan sunucuya aynı şekilde gerçekleşir. aynı şekilde yapılandırmalısınız. Hata kodu bağlantı akışı alternatif seçeneklerle devam eder.

iOS uygulamanızda App Flip'i destekleyecek şekilde değişiklik yapın

App Flip'i desteklemek için iOS uygulamanızda aşağıdaki kod değişikliklerini yapın:

  1. Uygulama Yetkinizde NSUserActivityTypeBrowsingWeb için işlem yapın.
  2. Daha sonra kullanmak üzere URL'den redirect_uri ve state parametrelerini alın.
  3. redirect_uri etiketinin şu biçimle eşleştiğinden emin olun:
    https://oauth-redirect.googleusercontent.com/a/GOOGLE_APP_BUNDLE_ID
    https://oauth-redirect-sandbox.googleusercontent.com/a/GOOGLE_APP_BUNDLE_ID
  4. İstemci kimliğinin beklenen değerle eşleştiğini doğrulayın. Şunları kullanın: kod örneği:

    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. Başarılı yetkilendirmeden sonra yetkilendirme ile yönlendirme URI'sini çağırın girin. Aşağıdaki kod örneğini kullanın:

    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. Bir hata oluşursa bunun yerine yönlendirme URI'sine bir hata sonucu ekleyin. Aşağıdaki kod örneğini kullanın:

    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 uygulaması tarafından açıldığında uygulamanızın evrensel bağlantısı şunları içerir: sorgu parametreleri:

  • client_id (String): Uygulamanızda kayıtlı Google client_id.
  • scope (List of String): Boşlukla ayrılmış kapsamların listesi istendi.
  • state (String): Google'ın, yetkilendirmeyi doğrulamak için kullandığı tek seferlik rastgele sayı Google'ın giden isteğine yanıt vermesi gerekir.
  • redirect_uri (String): Google'ın evrensel bağlantısı. "Katlama" Açılacak URI Google uygulaması ve geçiş sonuçları.

Yetkilendirme sonucu başarıyla döndürüldüğünde kullanılan parametreler:

  • code (String): Varsa yetkilendirme kodunun değeri.
  • state (String): Gelen evrensel bağlantıdan alınan tam değer.

Yetkilendirme sonucu başarısız bir şekilde döndürüldüğünde kullanılan parametreler:

  • Aşağıdaki değerlere sahip error (String):

    • cancelled: Kurtarılabilir bir hata. Google uygulaması, hesabı kullanmayı deneyecek bağlama işlemini yapıyor. Örneğin, kullanıcının veya bağlantının zaman aşımına uğraması gibi sorunları giderebilirsiniz.
    • unrecoverable: Kurtarılamayan bir hata. Örneğin, kullanıcı, devre dışı bırakılmış bir hesapla bağlantı kurmaya çalışır.Google uygulaması, hesap bağlama işlemini iptal eder.
    • invalid_request: İstek parametreleri geçersiz veya eksik. Bu hata kurtarılabilir. Google uygulaması, yetkilendirme URL'sini kullanarak hesap bağlamayı dener.
    • access_denied: Kullanıcı, izin isteğini reddeder. Bu, düzeltilemeyen bir hatadır; Google uygulaması, bağlantıyı iptal ediyor.
  • error_description (String, isteğe bağlı): Kullanıcı dostu bir hata mesajı.

Tüm hata türleri için yanıt verilerini belirtilen Uygun yedeğin tetiklendiğinden emin olmak için REDIRECT_URI.

Yetkilendirme uç noktanızı App Flip'i destekleyecek şekilde değiştirin

Platformunuzu, Google'ın App Flip yönlendirme URL'lerini kullanarak istekleri kabul edecek şekilde yapılandırın:

  • Google Home uygulaması
    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 Asistan uygulaması
    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 ve redirect_uri parametresi tarafından belirtilen URL'yi kontrol edin ve bir istek alındığında beklenen değerlerle eşleşir. müşteri doğrulaması başarısız olursa invalid_request hatasını redirect_uri öğesine döndürün.