-
페이스북 간편 로그인Language/iOS,AOS 2023. 2. 23. 09:51
1. 페이스북 개발자 사이트 앱 등록 (스킵)
페이스북 개발자 사이트 접속 후 앱 등록
https://developers.facebook.com/
앱 등록
2. SDK 설치
코코아팟으로 SDK 설치합니다.
참조 : https://dchkang83.tistory.com/104
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
`로컬,개발,스테이징,운영` 버튼을 선택할때 아래 코드를 통해서 인증에 대한 초기화를 해주었다.
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
https://developers.facebook.com/docs/facebook-login/ios/?locale=ko_KR
https://velog.io/@nnnyeong/iOS-AppDelegate-SceneDelegate
'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