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:
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.
Uygulamanız,
client_id
veredirect_uri
parametresinin kodlanıp kodlanmadığını kontrol eder değeri, beklenen Google evrensel bağlantısıyla eşleşir.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.
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:
- Uygulama Yetkinizde
NSUserActivityTypeBrowsingWeb
için işlem yapın. - Daha sonra kullanmak üzere URL'den
redirect_uri
vestate
parametrelerini alın. 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
İ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 } }
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) } }
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) } }
Uygulamanızın evrensel bağlantısı için sorgu parametreleri
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ı Googleclient_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ı.
Google evrensel bağlantısı için sorgu parametreleri
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.