Sign in with Apple ­čĹę­čĆ╗ÔÇŹ­čĺ╗



  • Apple, iOS 13 ile birlikte Apple Kimli─činizi kullanarak uygulamalar ve web siteleri i├žin hesaplar olu┼čturman─▒z─▒ sa─člayan "Sign in with Apple" hizmetini tan─▒tt─▒, bu mobimiz de bu ├Âzelli─či uygulamam─▒za ekleme ad─▒mlar─▒ndan ve bize sundu─ču avantajlardan bahsedece─čiz.


  • Sign in with Apple, s─▒kl─▒kla kar┼č─▒m─▒za ├ž─▒kan "Sign In with Facebook" ya da ÔÇťSign In with GoogleÔÇŁ gibi oturum a├žmaya kolayl─▒k sa─člayan bir ├Âzellik olarak kar┼č─▒m─▒za ├ž─▒k─▒yor.






  • ├ľrneklerinden farkl─▒ olarak bize sundu─ču en ├Ânemli ├Âzellik ise as─▒l e-posta adresinizi uygulama ile payla┼čmak istemiyorsan─▒z, Apple sizin i├žin bir ÔÇťrelayÔÇŁ e-posta adresi olu┼čturmaktad─▒r. Bu e-posta adresi a┼ča─č─▒daki resimde g├Ârd├╝─č├╝n├╝z gibi harf ve say─▒lardan olu┼čur. Olu┼čturulan ÔÇťrelayÔÇŁ adresinize g├Ânderilen t├╝m e-postalar, as─▒l e-posta adresinize g├Ânderilir. E─čer uygulamadan gelen e-postalar─▒ kesmek isterseniz, ÔÇťrelayÔÇŁ adresinizi istedi─činiz zaman devred─▒┼č─▒ b─▒rakabilirsiniz. Bu ├Âzelliklerle beraber "Sign in with Apple" ┼čimdiye kadarki ├╝├ž├╝nc├╝-parti oturum a├žma hizmetlerinden ├žok daha g├╝venli ve m├╝┼čteri gizlili─čine ├Ânem veren bir deneyim olarak kar┼č─▒m─▒za ├ž─▒k─▒yor.



  • Bu mobimizde geli┼čtiriciler i├žin Apple hesab─▒yla uygulamaya login olup, kullan─▒c─▒ bilgilerini alarak Sign In with Apple'─▒ uygulamam─▒za entegre edece─čiz.


GEL─░┼×T─░RME


O zaman projemize ekleme ad─▒mlar─▒na ba┼člayabiliriz.


Bu ├Âzelli─či uygulaman─▒za iki farkl─▒ yolla ekleyebilirsiniz. ─░lk yol Apple Developer Account' unuzda App ID Configurations 'da Certificates, Identifiers & Profiles ├╝zerinden ekleyerek ilerlemek, bir di─čer yol ise Xcode ├╝zerinden a┼ča─č─▒daki ad─▒mlar─▒ takip ederek ilerlemek. Bu mobi'mizde Xcode ├╝zerinden ekleyerek devam ediyoruz.



1. Xcode'da geli┼čtirme yapt─▒─č─▒n─▒z projenizi a├ž─▒n.

2. Project NavigatorÔćĺ Select Project Ôćĺ Select Target.

3. Project Editor ' de "Click Signing & Capabilities" ge├žin.

4. (+) Capability butonuna t─▒klayarak "Sign In with Apple" diyerek aratt─▒ktan sonra ├žift t─▒klayarak projenize ekleyebilirsiniz.


Sign in with Apple ├Âzelli─čini kullanabilmemiz i├žin Authentication Services framework'├╝n├╝ projemize ekliyoruz.

import AuthenticationServices

├ľncelikle butonumuzu olu┼čturmam─▒z gerekiyor. ASAuthorizationAppleIDButton s─▒n─▒f─▒ndan kendimize bir buton olu┼čturup, kod i├žinde ├Âzelliklerini veriyoruz.



  • Kullan─▒c─▒ olu┼čturulan "Sign in with Apple" butonuna t─▒klad─▒─č─▒nda handleAuthorizationAppleIdRequest() fonksiyonu kimlik do─črulama ak─▒┼č─▒n─▒, kullan─▒c─▒lar─▒n tam ad─▒ ve e-posta adresi (fullName, email) i├žin ASAuthorizationAppleIDProvider s─▒n─▒f─▒ndan olu┼čturulan bir yetkilendirme iste─či ("request") ger├žekle┼čtirerek ba┼člat─▒r. Sistem daha sonra kullan─▒c─▒n─▒n cihazdaki Apple kimli─čiyle oturum a├ž─▒p a├žmad─▒─č─▒n─▒ kontrol eder. Kullan─▒c─▒ oturum a├žmam─▒┼čsa uygulama kullan─▒c─▒y─▒ Ayarlar'da Apple kimli─čiyle oturum a├žmaya y├Ânlendiren bir uyar─▒ verir.

NOT: Kullan─▒c─▒n─▒n "Sign in with Apple" kullanabilmesi i├žin "Two-Factor Authentication" etkinle┼čtirilmi┼č olmas─▒ gerekir.


  • ASAuthorizationController, Apple ile oturum a├žmay─▒ kullan─▒c─▒ya kal─▒c─▒ olarak sunmak ve uygulamadan window almak i├žin PresentationAnchor (for :) fonksiyonunu tetikler.


  • Login i┼člemi ba┼čar─▒l─▒ olursa, ASAuthorizationController uygulaman─▒n kullan─▒c─▒ verilerini Keychain'de saklamak i├žin ASAuthorizationController (controller: didCompleteWithAuthorization :) delegate fonksiyonunu tetikler.


  • Login i┼člemi ba┼čar─▒s─▒z olursa, ASAuthorizationController hatay─▒ yakalamak i├žin authorizationController (controller: didCompleteWithError :) delegate fonksiyonunu tetikler.


  • performExistingAccountSetupFlows() fonksiyonu, kullan─▒c─▒n─▒n hem Apple ID hemde iCloud Keychain ┼čifresi isteyerek mevcut bir hesab─▒ olup olmad─▒─č─▒n─▒ kontrol eder. handleAuthorizationAppleIDRequest() fonksiyonuna benzer ┼čekilde, kimlik do─črulama ak─▒┼č─▒n─▒ ba┼člat─▒r.


  • AppDelegate'de getCredentialState (forUserID: completion :) fonksiyonu, Keychaine kaydedilen user identifier'─▒ al─▒r ve kullan─▒c─▒ uygulama i├žin yetki verdiyse (├Ârne─čin, cihazda Apple kimli─čiyle uygulamada oturum a├žarsa), uygulama ├žal─▒┼čmaya devam eder. Kullan─▒c─▒, uygulaman─▒n yetkisini iptal ettiyse veya kullan─▒c─▒n─▒n kimlik bilgisi bulunmad─▒ysa, a├ž─▒l─▒┼č sayfas─▒ g├Âr├╝nt├╝lenir.


  • A┼ča─č─▒da uygulamam─▒za entegre etti─čimiz Sign in with Apple'─▒n ├žal─▒┼čma mant─▒─č─▒ ile ilgili genel yakla┼č─▒m─▒ i├žeren bir g├Ârsel bulunuyor. Sizde kendinize ├Âzel tasar─▒mlar─▒ ├Ârnek demomuz ├╝zerinden olu┼čturup, inceleyebilirsiniz ho┼č├žakal─▒n!


SONUÇ




Kaynaklar:

https://developer.apple.com/documentation/authenticationservices

https://developer.apple.com/documentation/authenticationservices/implementing_user_authentication_with_sign_in_with_apple

https://engineering.q42.nl/sign-in-with-apple/

https://medium.com/@priya_talreja/sign-in-with-apple-using-swift-5cd8695a46b6

https://medium.com/@robotsNpencils/sign-in-with-apple-1109c49ec577


Github: https://github.com/tugcedulge/SignInWithAppleID


#signinwithapple #apple #ios






0 yorum

Son Payla┼č─▒mlar

Hepsini G├Âr

Kom├╝nite

Platform

Mobiler.dev Anasayfa
  • Twitter
  • Instagram
  • development_d├╝zenlendi_d├╝zenlendi
  • Youtube
  • slack-icon-black_edited_edited_edited
  • Gri LinkedIn Simge
imageedit_2_9667998092.png
JetBrains Hakk─▒nda Detayl─▒ Bilgi Al─▒n

┬ę 2021 by mobiler.dev

Kurumsal Yazar Hesaplar─▒

adesso.png
mobilerdevLogo.jpg
Yazarl─▒k Ba┼čvurusu Hakk─▒nda Bilgi Al─▒n, Ba┼čvuru Yap─▒n.
Topluluk Yazarlar─▒n─▒ Tan─▒y─▒n