OAuth 2.0 uygulamanız olduğunda, iOS kullanıcılarınızın kimlik doğrulama sisteminizdeki hesaplarını Google Hesaplarına daha hızlı bağlamasına olanak tanıyan OAuth tabanlı App Flip özelliğini isteğe bağlı olarak yapılandırabilirsiniz. Aşağıdaki bölümlerde, iOS'te Cloud-to-cloud entegrasyonunuz için App Flip özelliğini nasıl tasarlayıp uygulayacağınız açıklanmaktadır.
Tasarım yönergeleri
Bu bölümde, Uygulama Değiştirme hesap bağlama izin ekranıyla ilgili tasarım şartları ve önerileri açıklanmaktadır. Google, uygulamanızı çağırdıktan sonra uygulamanız kullanıcıya izin ekranını gösterir.
Şartlar
- "Bağlandıktan sonra Google, cihazlarınızı kontrol etme iznine sahip olur." gibi bir Google yetkilendirme beyanınız olmalıdır.
- Kullanıcı hesabının Google Home veya Google Asistan gibi belirli bir Google ürününe değil Google'a bağlandığını belirtmeniz gerekir.
- İzin ekranınızda net bir harekete geçirici mesaj belirtmeniz ve bağlama işlemi için "Kabul et ve bağla" ifadesini kullanmanız gerekir. Bunun nedeni, kullanıcıların hesaplarını bağlamak için Google ile hangi verileri paylaşmaları gerektiğini anlamaları gerektiğidir.
- Kullanıcılar bağlantı oluşturmamayı seçerse geri dönmelerine, reddetmelerine veya iptal etmelerine olanak tanımanız gerekir. İptal işlemi için "İptal" kelimesini kullanın.
- Şu iş akışını uygulamanız gerekir: "Kabul et ve bağla"yı tıkladıktan sonra bağlama işleminin başarılı olduğunu göstermeli ve kullanıcıyı otomatik olarak Google Home uygulamasına yönlendirmelisiniz. Kullanıcı, işleminizle birlikte Google Home uygulamasında bağlı cihazı görmelidir. "İptal"i tıkladıktan sonra kullanıcıyı Google Home uygulamasına yönlendirmeniz gerekir.
Öneriler
Aşağıdakileri yapmanızı öneririz:
Google'ın Gizlilik Politikası'nı gösterin. Kullanıcı rızası ekranına Google'ın Gizlilik Politikası bağlantısını ekleyin.
Paylaşılacak veriler. Google'ın hangi kullanıcı verilerini neden istediğini kullanıcıya bildirmek için açık ve net bir dil kullanın.
Bağlantıyı kaldırma özelliği. Kullanıcılara bağlantıyı kaldırma mekanizması sunun. Örneğin, platformunuzdaki hesap ayarlarına yönlendiren bir URL. Alternatif olarak, kullanıcıların bağlı hesaplarını yönetebileceği Google Hesabı'na bir bağlantı ekleyebilirsiniz.
Kullanıcı hesabını değiştirme Kullanıcılara hesaplarını değiştirmeleri için bir yöntem önerin. Bu özellik, özellikle kullanıcıların birden fazla hesabı olduğu durumlarda faydalıdır.
- Kullanıcının hesap değiştirmek için izin ekranını kapatması gerekiyorsa Google'a kurtarılabilir bir hata gönderin. Böylece kullanıcı, OAuth bağlantısı ve örtülü akışla istediği hesapta oturum açabilir.
Logonuzu ekleyin. İzin ekranında şirket logonuzu gösterin. Logonuzu yerleştirmek için stil kurallarınızı kullanın. Google'ın logosunu da göstermek istiyorsanız Logolar ve ticari markalar bölümüne bakın.
OAuth tabanlı App Flip için kurulum yapın
Aşağıdaki bölümlerde, OAuth tabanlı uygulama bağlama için ön koşullar ve Google Home Developer Console'da uygulama bağlama projenizi nasıl yapılandıracağınız açıklanmaktadır.
Buluttan buluta entegrasyon oluşturma ve OAuth 2.0 sunucusu oluşturma
App Flip hizmetini yapılandırmadan önce aşağıdakileri yapmanız gerekir:
- OAuth 2.0 sunucusu oluşturun. OAuth sunucusu oluşturma hakkında daha fazla bilgi için OAuth 2.0 sunucusu uygulama başlıklı makaleyi inceleyin.
- Buluttan buluta entegrasyon oluşturun. Entegrasyon oluşturmak için Buluttan buluta entegrasyon oluşturma başlıklı makaledeki talimatları uygulayın.
Developer Console'da Uygulama Bağlama'yı yapılandırma
Aşağıdaki bölümde, Geliştirici Konsolu'nda Uygulama Bağlama'nın nasıl yapılandırılacağı açıklanmaktadır.
- OAuth istemci bilgileri bölümündeki tüm alanları doldurun. (App Flip desteklenmiyorsa yedek olarak normal OAuth kullanılır.)
- Hesap bağlama için uygulamanızı kullanın(isteğe bağlı) bölümünde iOS için etkinleştir'i işaretleyin.
- Geçiş Bağlantısı alanını doldurun. Geçiş Bağlantıları hakkında daha fazla bilgi için Uygulamaların ve Web Sitelerinin İçeriğinize Bağlantı Vermesine İzin Verme başlıklı makaleyi inceleyin.
- İstemcinizi isteğe bağlı olarak yapılandırmak istiyorsanız kapsam ekleyin ve İstemcinizi yapılandırın (isteğe bağlı) bölümünde Kapsam ekle'yi tıklayın.
- Kaydet'i tıklayın.
Artık iOS uygulamanızda App Flip uygulamasını uygulamak için sonraki bölüme geçebilirsiniz.
Yerel uygulamalarınızda App Flip uygulayın
App Flip özelliğini uygulamak için uygulamanızdaki kullanıcı yetkilendirme kodunu, Google'dan gelen derin bağlantıyı kabul edecek şekilde değiştirmeniz gerekir.
OAuth tabanlı Uygulama Bağlama (Uygulama Bağlama), Google uygulaması kullanıcısının hesabını daha kolay bağlamasına yardımcı olmak için iOS uygulamanızı bir Google uygulamasından açar. Bu özelliği uygulamak için iOS uygulamanızda küçük kod değişiklikleri yapmanız gerekir.
Bu dokümanda, iOS uygulamanızı uygulama bağlama'yı destekleyecek şekilde nasıl değiştireceğinizi öğreneceksiniz.
Örneği deneyin
Uygulama Bağlama örnek uygulaması, iOS'te Uygulama Bağlama ile uyumlu bir hesap bağlama entegrasyonunu gösterir. Google mobil uygulamalarından gelen bir uygulama bağlama geçiş bağlantısına nasıl yanıt verileceğini doğrulamak için bu uygulamayı kullanabilirsiniz.
Örnek uygulama, iOS için Uygulama Bağlama Test Aracı ile entegre olacak şekilde önceden yapılandırılmıştır. Bu aracı, Google ile hesap bağlantısını yapılandırmadan önce iOS uygulamanızın Uygulama Bağlama ile entegrasyonunu doğrulamak için kullanabilirsiniz. Bu uygulama, uygulama bağlama etkinleştirildiğinde Google mobil uygulamaları tarafından tetiklenen Geçiş Bağlantılarını simüle eder.
İşleyiş şekli
Uygulama Bağlama gerçekleştiğinde Google uygulamasının ve uygulamanızın izlediği akış adımları şunlardır:
Google uygulaması, uygulamanızın Geçiş Bağlantısını açmaya çalışır. Uygulamanız kullanıcının cihazında yüklüyse ve geçiş bağlantısıyla ilişkilendirilmişse uygulamanızı açabilir. Ayrıntılar için Geçiş Bağlantıları'nı Destekleme başlıklı makaleyi inceleyin.
Uygulamanız, gelen URL'de kodlanmış
client_idveredirect_uriparametrelerinin beklenen Google evrensel bağlantısıyla eşleşip eşleşmediğini kontrol eder.Uygulamanız, OAuth2 sunucunuzdan bir yetkilendirme kodu ister. Bu akışın sonunda uygulamanız, Google Uygulamasına bir yetkilendirme kodu veya hata döndürür. Bunun için, yetkilendirme kodu veya hata için eklenen parametrelerle Google'ın Geçiş Bağlantısını açar.
Google uygulaması, gelen Google geçiş bağlantısını işler ve akışın geri kalanıyla devam eder. Yetkilendirme kodu sağlanırsa bağlantı hemen tamamlanır. Jeton değişimi, tarayıcı tabanlı OAuth bağlama akışında olduğu gibi sunucudan sunucuya gerçekleşir. Hata kodu döndürülürse bağlantı akışı alternatif seçeneklerle devam eder.
iOS uygulamanızı Uygulama Bağlama'yı destekleyecek şekilde değiştirme
Uygulama Bağlama'yı desteklemek için iOS uygulamanızda aşağıdaki kod değişikliklerini yapın:
- Uygulama temsilcinizde
NSUserActivityTypeBrowsingWeböğesini işleyin. - Daha sonra kullanmak üzere URL'den
redirect_urivestateparametrelerini alın. redirect_urideğerinin ş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. Aşağıdaki kod örneğini kullanın:
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 } }Yetkilendirme başarılı olduktan sonra yetkilendirme koduyla yönlendirme URI'sini çağırın. 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) } }Hata oluştuysa yönlendirme URI'sine 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 Geçiş Bağlantıları için sorgu parametreleri
Google Uygulaması tarafından açıldığında uygulamanızın Geçiş Bağlantısı aşağıdaki sorgu parametrelerini içerir:
client_id(String): Uygulamanızın altında kayıtlı olan Googleclient_id.scope(List of String): İstenen boşlukla ayrılmış kapsamların listesi.state(String): Google tarafından, yetkilendirme sonucunun Google'ın giden isteğine yanıt olarak gönderildiğini doğrulamak için kullanılan tek seferlik rastgele sayı.redirect_uri(String): Google'ın Geçiş Bağlantıları. Google uygulamasını açmak ve sonuçları iletmek için "flip" URI'si.
Google'ın Geçiş 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 Geçiş Bağlantısından alınan tam değer.
Yetkilendirme sonucu başarısız olduğunda kullanılan parametreler:
error(String), şu değerlerle:cancelled: Düzeltilebilir bir hata. Google uygulaması, yetkilendirme URL'sini kullanarak hesap bağlamayı dener. Kullanıcının oturum açamaması, cihazın çevrimdışı olması veya bağlantı zaman aşımı bunlara örnek verilebilir.unrecoverable: Düzeltilemeyen bir hata. Örneğin, kullanıcı devre dışı bırakılmış bir hesaba bağlanmaya çalışırsa Google uygulaması hesap bağlama işlemini iptal eder.invalid_request: İstek parametreleri geçersiz veya eksik. Bu hata düzeltilebilir. Google uygulaması, yetkilendirme URL'sini kullanarak hesap bağlamayı dener.access_denied: Kullanıcı izin isteğini reddeder. Bu, kurtarılamayan bir hatadır. Google uygulaması, bağlantı oluşturma işlemini iptal eder.
error_description(String, isteğe bağlı): Kullanıcı dostu bir hata mesajı.
Tüm hata türleri için yanıt verilerini belirtilen REDIRECT_URI öğesine döndürerek uygun yedeğin tetiklenmesini sağlamanız gerekir.
Yetkilendirme uç noktanızı uygulama bağlamayı destekleyecek şekilde değiştirme
Platformunuzu, Google'ın uygulama bağlama 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
Google Home app (GHA) için akıllı ev hesabı bağlama işleminde com.google.Chromecast yönlendirme URL'leri kullanılır. Yetkilendirme sunucunuzun bu yönlendirme URL'lerine izin verdiğinden emin olun.
Bir istek alındığında client_id ve redirect_uri parametresi tarafından belirtilen URL'nin beklenen değerlerle eşleştiğini kontrol edin. İstemci doğrulaması başarısız olursa redirect_uri öğesine invalid_request hatasını döndürün.
Cihazınızda App Flip uygulamasını test edin
Buluttan buluta entegrasyon oluşturup konsolda ve uygulamanızda uygulama bağlamayı yapılandırdığınıza göre artık mobil cihazınızda uygulama bağlamayı test edebilirsiniz. Uygulama Bağlama'yı test etmek için Google Home uygulamasını kullanabilirsiniz.
App Flip uygulamasını Google Home uygulamasından test etmek için aşağıdaki adımları uygulayın:
- Developer Console'a gidip projenizi seçin.
- Cloud-to-cloud > Test'e gidin.
- Home uygulamasından hesap bağlama akışını tetikleyin:
- Google Home app (GHA) uygulamasını açın.
- + düğmesini tıklayın.
- Cihazı kur'u tıklayın.
- Kurulmuş cihazlarınız mı var? seçeneğini tıklayın.
- Sağlayıcı listesinden buluttan buluta entegrasyonunuzu seçin. Listede "[test]" ön ekiyle gösterilir. Listeden [test] entegrasyonunuzu seçtiğinizde uygulamanız açılır.
- Uygulamanızın başlatıldığını doğrulayın ve yetkilendirme akışınızı test etmeye başlayın.