-
페이스북 간편 로그인Language/iOS,AOS 2023. 2. 23. 09:51
1. 페이스북 개발자 사이트 앱 등록 (스킵)
페이스북 개발자 사이트 접속 후 앱 등록
https://developers.facebook.com/
Meta for Developers
꿈의 아틀리에 창조 BUCK의 크리에이터와 개발자로부터 Meta Spark를 사용하여 DIOR Beauty를 위한 AR 경험을 설계 및 빌드하는 과정에 대한 비하인드 스토리를 들어보세요. 이제 고급 액세스에 대한 비
developers.facebook.com
앱 등록
2. SDK 설치
코코아팟으로 SDK 설치합니다.
참조 : https://dchkang83.tistory.com/104
iOS/Xcode 14X - 2. CocoaPods 추가
CocoaPods란? dependacy management & 많은 xcode 프로젝트 라이브러리 들을 관리한다. (gradle?, maven? 등의 역할!!) Xcode에서 라이브러리 관리(Dependency Management)해주는 방법에는 대표적으로 3가지가 있다 CocoaPod
dchkang83.tistory.com
FBSDKLoginKit 설치를 통해서 페이스북 로그인 api를 사용할 수 있습니다.
참조 : https://developers.facebook.com/docs/facebook-login/ios
target 'gobang' do ... # 페이스북 pod 'FBSDKLoginKit' ... end
SDK 설치가 완료되었다면 Xcode를 재시작 해주시고 라이브러리가 인식할 수 있도록 해줍니다.
3. info.plist 설정
Info -> Open As -> Source Code
참조 : https://developers.facebook.com/docs/facebook-login/ios
Facebook 앱으로 앱 전환을 수행할 수 있는 Facebook 대화 상자(예: 로그인, 공유, 앱 초대 등)를 사용하려면 앱의 Info.plist에도 다음 항목을 포함해야 합니다. (fbapi, fb-messenger-share-api 추가)
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> ... <key>LSApplicationQueriesSchemes</key> <array> ... <string>fbapi</string> <string>fb-messenger-share-api</string> </array> </dict> </plist>
CFBundleURLTypes에 3가지 항목을 추가하고 각각의 앱 설정 값으로 대체합니다.
APP-ID : 앱 ID
CLIENT-TOKEN : 설정 -> 고급 -> 클라이언트 토큰
APP-NAME : 앱 이름
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>CFBundleURLTypes</key> <array> ... <dict> <key>CFBundleURLSchemes</key> <array> <string>fb{APP-ID}</string> </array> <key>FacebookAppID</key> <string>{APP-ID}</string> <key>FacebookClientToken</key> <string>{CLIENT-TOKEN}</string> <key>FacebookDisplayName</key> <string>{APP-NAME}</string> </dict> </array> ... </dict> </plist>
4. Delegate 설정
4.1. AppDelegate 설정
import FBSDKLoginKit @main class AppDelegate: UIResponder, UIApplicationDelegate { .... func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { ... // FBSDKLoginKit 5.0 - 이전 // FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions) // FBSDKLoginKit 5.0 - 이후 ApplicationDelegate.shared.application(application, didFinishLaunchingWithOptions: launchOptions) ... return true } }
4.2. 앱의 진입 형태에 따라서 설정
앱 진입부 InitViewController를 설정하고 로컬,개발,스테이징,운영 선택지에 따라서 설정하도록 하였다.
https://dchkang83.tistory.com/124
iOS/WebView/Project - 서버별 테스트 환경 만들기#11
IOS/Xcode 14X Swift5.7.2 WKWebView 에서 작업 진행 이번장에서는 지난 블로그에서 설정한 Constants(상수) 및 AppInfo(싱글톤)를 활용하여 웹뷰에 나타나는 웹서버를 변경할 수 있도록하여 디버깅 및 앱에 대
dchkang83.tistory.com
`로컬,개발,스테이징,운영` 버튼을 선택할때 아래 코드를 통해서 인증에 대한 초기화를 해주었다.
Settings.shared.appID = "{APP_ID}" Settings.shared.clientToken = "{CLIENT_TOKEN}" Settings.shared.displayName = "{DISPLAY_NAME}"
5. 로그인, 로그아웃
import FBSDKLoginKit MARK: - 페이스북 로그인 - 확장 extension MainViewController: LoginButtonDelegate { /** * 로그인 및 체크 */ func loginWithFacebook(callback: String) -> Void { if let token = AccessToken.current, !token.isExpired { // 로그인 되어있는 경우 guard AccessToken.current != nil, let accessToken: String = AccessToken.current?.tokenString as? String else { return } Utils.Log(">>>>>>>>>> accessToken : \(accessToken)") } else { // 로그인 요청 let fbInstance = FBLoginButton() fbInstance.delegate = self fbInstance.permissions = ["public_profile", "email"] fbInstance.sendActions(for: .touchUpInside) } } /** * 로그아웃 */ func logOutWithFacebook() { let fbLoginManager = LoginManager() fbLoginManager.logOut() } /** * 로그인 - 완료 */ func loginButton(_ loginButton: FBLoginButton, didCompleteWith result: LoginManagerLoginResult?, error: Error?) { if let error = error { //self.delegate?.onError(.facebook, error) } else { if let result = result { let callback = "window.setAccessToken" guard AccessToken.current != nil, let accessToken: String = AccessToken.current?.tokenString as? String else { return } Utils.Log(">>>>>>>>>> accessToken : \(accessToken)") } } } /** * 로그아웃 - 완료 */ func loginButtonDidLogOut(_ loginButton: FBLoginButton) { } }
사실 좀더 보완해야 할 부분들이 더 있는것 같다.. 일정이 있으니 이번에는 여기에서 만족하자!!
참조
https://developers.facebook.com/docs/ios/advanced?locale=ko_KR
고급 주제 - iOS용 Facebook SDK - 문서 - Meta for Developers
소스에서 빌드 GitHub에서 Swift 패키지 관리자, CocoaPods, Carthage가 지원되는 SDK용 소스를 가져올 수도 있습니다. 자세한 내용은 GitHub, Facebook iOS SDK 소스를 참조하세요. 먼저 선택한 위치에 복제하여
developers.facebook.com
https://developers.facebook.com/docs/facebook-login/ios/?locale=ko_KR
iOS - Facebook 로그인 - 문서 - Meta for Developers
iOS용 Facebook 로그인 - 빠른 시작 사용자가 Facebook으로 앱에 로그인하는 경우, 사용자는 Facebook에서 대신 정보를 가져오거나 작업을 수행하도록 앱에 권한을 부여할 수 있습니다. iOS 프로젝트에 Fac
developers.facebook.com
https://velog.io/@nnnyeong/iOS-AppDelegate-SceneDelegate
[iOS] AppDelegate, SceneDelegate (iOS 13 이전 이후)
AppDelegate와 SceneDelegate iOS 12 iOS 12 이전까지는 하나의 앱에 하나의 window AppDelegate 내에서 App Life Cycle, UI Life Cycle 을 모두 담당함 iOS 13 iOS 13 부터는 window 개념이
velog.io
'Language > iOS,AOS' 카테고리의 다른 글
웹뷰 캐시 삭제 (0) 2023.03.01 scrollView 확대/축소 방법 (0) 2023.02.24 네이버 간편 로그인 연동 (0) 2023.02.21 카카오 간편 로그인 연동 (0) 2023.02.20 Xcode Swift에서 GIF 사용 (0) 2023.02.20