Apple ile Giriş Yapın — bunu uygulamanızda uygulayın!
Yayınlanan: 2020-01-14Apple ile Oturum Açın — Apple tarafından geçen yıl WWDC'de sunulan yeni bir özellik, şimdi iOS 13'ten edinilebilir. Bu özellik, uygulamada veya web sitesinde basit ve güvenli hesap kaydı ve oturum açma sunar. Kayıt formlarını doldurmak veya sosyal medya üzerinden giriş yapmak yerine artık bir hesap oluşturabilir ve Apple Kimliğinizle giriş yapabilir ve Face ID, Touch ID veya şifre ile doğrulayabilirsiniz.
Apple ile Giriş Yap'ın kısa bir açıklaması:
- Hızlı, kolay hesap kurulumu ve oturum açma
- Doğrulanmış e-posta adresleri
- Yerleşik güvenlik
- Anti-dolandırıcılık
- Çapraz platform ️
- iOS 13+
Bu yazıda, web sürümü ile entegrasyon veya arka uç ile entegrasyon olmadan iOS cihazlarda Sign In With Apple'ın temel uygulamasına odaklanacağım.
“Apple ile Giriş Yap” özelliği nasıl çalışır?

“Apple ile Giriş Yap” veya “Apple ile Devam Et” seçeneğine dokunduktan sonra (uygulamada hangi düğmenin seçildiğine bağlıdır), bu çözümün olanaklarını içeren bir bilgi penceresi açılır (ikinci ekran görüntüsü). Ardından “Devam” seçeneğine dokunduktan sonra, uygulamanın sahibiyle hangi verilerin paylaşılacağı hakkında bilgi alıyoruz.
Burada, Apple ile Giriş Yap özelliğini kullanarak uygulamada bir hesap kaydetmek için iki seçeneğimiz var:
- E-posta adresimizi paylaşarak - gerçek e-posta adresiniz uygulama veya web sitesi ile paylaşılacaktır.
- E-posta adresimizi gizleyerek — gerçek e-postanız uygulama veya web sitesinde paylaşılmayacaktır. Apple, @privaterelay.appleid.com alan adıyla sizin için benzersiz bir e-posta oluşturur. Endişelenmeyin, uygulamanın sahibinden gelen tüm e-postalar yine de gelen kutunuza iletilecektir, çünkü e-postalar gerçek e-posta adresimize yönlendirilecektir. Uygulamanın sahibi yalnızca Apple alanıyla oluşturulan e-posta adresini bilecektir.
Seçeneklerden birini seçip “Devam” seçeneğine dokunduktan sonra, telefonun kilidini açarken olduğu gibi, yani Face ID, Touch ID ile veya şifre girerek Apple Kimliğimizi doğrularız. Bu noktada uygulamada/web sitesinde kullanıcı için benzersiz bir tanımlayıcı ile bir hesap oluşturulmalıdır.

Uygulamada daha önce “Apple ile Giriş Yap” özelliğini kullandığınızda, bu şekilde giriş yapmanın ayrıntılarını önizleyebilirsiniz ve bu özelliği kullanmayı bırakabilirsiniz. Bunu yapmak için Ayarlar > Apple Kimliği > Parola ve Güvenlik > Apple Kimliğinizi Kullanan Uygulamalar > Uygulama Seç'e gidin.
“Apple ile Giriş Yap” nasıl uygulanır?
“Apple ile Giriş Yap”ın teorik kısmını okuduktan sonra uygulamaya geçebiliriz.

Öncelikle projenizde “Signing & Capabilities”i açmanız, ardından + tuşlarına basarak “Apple ile Giriş Yap” özelliğini eklemeniz gerekiyor.

WWDC açılış konuşmasında Apple, bu özelliği uygulama sürecini dört aşamaya böldü. Tüm aşamalar aşağıda açıklanmıştır.
1. Düğme
İlk olarak ekranımıza bir buton eklememiz gerekiyor. Bu, AuthenticationService
çerçevesinden ASAuthorizationAppleIDButton
düğmesi olmalıdır. Farklı başlıklarda iki renkte (beyaz ve siyah) mevcuttur. Düğmeye, dokunduktan sonra çağrılacak bir eylem eklemeliyiz. Yetkilendirme eylemini ikinci noktada anlatıyorum.
Kimlik Doğrulama Hizmetlerini içe aktar let düğmesi = ASAuthorizationAppleIDButton(tür: .signIn, stil: .white) button.addTarget(self, action: #selector(appleIdButtonClicked), için: .touchUpInside) stackView.addArrangedSubview(düğme)
2. Yetkilendirme ️
Burada, requestScopes olarak yalnızca uygulamamızda veya web sitemizde bir hesap oluşturmak için gerekli olan bilgileri sağladığımız bir yetkilendirme requestedScopes
oluşturuyoruz. Benim durumumda, bu tam ad ve e-posta adresidir. Ardından temsilciyi ayarlayın ve isteği yapın.
@objc func appleIdButtonClicked() { izin ver request = ASAuthorizationAppleIDProvider().createRequest() request.requestedScopes = [.fullName, .email] let controller = ASAuthorizationController(yetkilendirmeRequests: [request]) controller.delegate = öz controller.presentationContextProvider = self controller.performRequests() }
3. Doğrulama
Face ID, Touch ID veya şifre ile hızlı bir kontrolden sonra, yetkilendirme sonucu iade edilecektir. Yetkilendirme başarılı olduğunda didCompleteWithAuthorization
yöntemi AppleIdCredential
türünde bir nesne döndürür. Ardından, bunların ASAuthorizationAppleIdCredential
türünden kimlik bilgileri olup olmadığını kontrol etmeniz gerekir - evet ise, bu nesnede benzersiz kullanıcı kimliği, tam ad ve e-posta adresi gibi sistemimizde bir hesap oluşturmak için gerekli tüm verileri bulacağız. kullanıcı daha önce istemişti). Bu noktada sadece gerekli bilgileri vererek sistemimizde hesap oluşturmaya geçebiliriz. Bir hata oluşursa, bu hatayı işleyebileceğimiz didCompleteWithError
yönteminde döndürülür.

func yetkilendirmeController(denetleyici: ASAuthorizationController, didCompleteWithAuthorization yetkilendirme: ASAuthorization) { appleIDCredential = yetkilendirme.credential olarak izin verilirse? ASAuthorizationAppleIDCredential { // Sisteminizde bir hesap oluşturun. } else if passwordCredential = yetkilendirme.credential as? ASPasswordCredential { // Mevcut bir iCloud Anahtar Zinciri kimlik bilgisini kullanarak oturum açın. } } func yetkilendirmeController(denetleyici: ASAuthorizationController, didCompleteWithError hatası: Hata) { yazdır(hata) }
4. Değişiklikleri işleme
Örneğin, kullanıcının bir Apple Kimliği kullanarak uygulama girişini kullanmayı bıraktığı gerçeğine hazırlıklı olmalısınız. Bu, kullanıcı uygulamayı yeniden başlattıktan sonra düzgün şekilde ele alınmalıdır.
Hesap kaydı sırasında aldığımız kullanıcı kimliğini kullanarak, çok hızlı bir şekilde getCredentialState
yöntemini çağırarak Apple Kimliği kimlik bilgilerinin mevcut durumunu alabiliriz. Bu yöntem üç durum döndürebilir:
-
authorized
— uygulamayı kullanmaya devam edebilecek yetkili bir kullanıcı. -
revoked
- kullanıcının oturumunu kapatın ve isteğe bağlı olarak onu tekrar oturum açması için oturum açma ekranına yönlendirebilirsiniz. -
notFound
— kullanıcının daha önce “Apple ile Giriş Yap” özelliğini kullanmadığı anlamına gelir. Bu noktada kullanıcıya giriş ekranını da gösterin.
getCredentialState
yönteminin çağrılması, didFinishLaunchingWithOptions
yönteminde AppDelegate
olmalıdır.
Ek olarak, Apple, kimlik bilgilerinin ne zaman iptal edildiğini bildirdiği ve ardından bu durum için yukarıda belirtilen şekilde ele almamız gereken bir Bildirim sağlar.
appleIDProvider.getCredentialState(forUserID: userId) { credentialState, hata credentialState { vaka .yetkili: // Apple Kimliği kimlik bilgisi geçerlidir. dava .revoked: // Apple Kimliği kimlik bilgisi iptal edildi, oturumu kapatın. durumda .notFound: // Kimlik bilgisi bulunamadı, bu nedenle oturum açma kullanıcı arayüzünü gösterin. varsayılan: kırmak } } // İptal bildirimi için kaydolun NotificationCenter.default.addObserver(forName: NSNotification.Name.ASAuthorizationAppleIDProviderCredentialRevoked, nesne: sıfır, kuyruk: nil) { _ in // Kullanıcının oturumunu kapatın, isteğe bağlı olarak tekrar oturum açması için onları yönlendirin }
Örnek uygulamamda dört aşamayı da uyguladıktan sonra her şey çalışıyor ve şöyle görünüyor:

Uygulamama “Apple ile Giriş Yap” eklemem gerekiyor mu?
Uygulamanız Facebook, Google veya LinkedIn gibi bir üçüncü taraf oturum açma yöntemi kullanıyorsa, yeni yönergelere göre Apple ile Giriş Yap'ı da eklemeniz gerekir. Eklemezseniz başvurunuz reddedilebilir ve Apple tarafından incelenmeyebilir. Aşağıda haberlere bir bağlantı ve yönergelerden bir alıntı bulunmaktadır.
Apple ile Oturum Açmak için Yeni Yönergeler— 12 Eylül 2019 ️
Bugünden itibaren App Store'a gönderilen yeni uygulamalar bu yönergeleri izlemelidir. Mevcut uygulamalar ve uygulama güncellemeleri, Nisan 2020'ye kadar bunları takip etmelidir.
Aşağıda Apple'ın yeni özelliğini kullanarak oturum açmayı teklif eden uygulamalar var, elbette her geçen gün daha fazlası var.

Tüm projeyi GitHub'ımda buradan kontrol edebilirsiniz.
Kaynaklar:
- https://developer.apple.com/videos/play/wwdc2019/706/
- https://developer.apple.com/videos/play/wwdc2019/516
- https://developer.apple.com/sign-in-with-apple/get-started/
- https://developer.apple.com/news/?id=09122019b
- https://developer.apple.com/app-store/review/guidelines/#sign-in-with-apple