Swift4.0에서 '페이스 북으로 로그인'을 구현할 때까지 작성하고 싶습니다.

환경



Xcode 9.0
iOS 11.0.1
Swift 버전 4.0
FacebookSDKs-iOS-4.27.0

먼저 시작하고 싶습니다.



Facebook 개발자가 아닌 분은 합시다.
htps : //에서 ゔぇぺぺrs. 후세보오 k. 코m/

앱을 추가하고 AppID와 앱 이름을 기억하십시오.

FacebookSDK 다운로드
ぇぺぺrs. 후세보오 k. 코 m / 도 cs / 이오 s / 도 w

「FacebookSDKs-iOS-x.x.x.zip」을 알기 쉽게 "~/Documents/"에 해동해 이름을 「FacebookSDK」로 해 본다.
라고 하는 것으로 해동한 폴더 "~/Documents/FacebookSDK/"를 보면(자) 안에 「FBSDK 호냐라.framework」라든지 많이 들어가 있습니다.

이것으로 아래 준비는 OK

테스트 프로젝트를 만들고 싶습니다.



Xcode에서 새로운 Single View App의 iOS 프로젝트를 만드세요.
저는 "FacebookLoginTest"라는 이름으로 진행합니다.

FacebookSDK를로드하고 싶습니다.



프로젝트의 「General」내에 있는 「Linked Frameworks and Libraries」에, 방금 다운로드해 해동한 FacebookSDK내의
FBSDKLoginKit.framework
FBSDKCoreKit.framework
를 추가합시다.



다음으로 프로젝트의 'Build Settings'내의 'Framework Search Paths'에
"~/Documents/FacebookSDK"를 추가하세요.



info.plist를 편집하고 싶습니다.



다음으로 "info.plist"의 코드를 열어 아래를 dict에 추가합시다.

info.plist
<key>CFBundleURLTypes</key>
<array>
  <dict>
  <key>CFBundleURLSchemes</key>
  <array>
    <string>fbさっき控えたアプリID</string>
  </array>
  </dict>
</array>
<key>FacebookAppID</key>
<string>さっき控えたアプリID</string>
<key>FacebookDisplayName</key>
<string>さっき控えたアプリ名</string>
<key>LSApplicationQueriesSchemes</key>
<array>
  <string>fbapi</string>
  <string>fb-messenger-api</string>
  <string>fbauth2</string>
  <string>fbshareextension</string>
</array>

키 체인 공유를 켜고 싶습니다.



프로젝트의 Capabilities 안에 있는 Keychain Sharing을 ON으로 합시다.
FacebookSDK는 키 체인에 액세스하는 것 같기 때문에.


드디어 코딩하고 싶습니다.



AppDelegate.swift



FacebookSDK를 먼저 import

AppDelegate.swift
import FBSDKCoreKit

AppDelegate.swift의 모든 메소드를 주석 처리하십시오.
그리고 다음을 AppDelegate.swift에 복사하십시오.

AppDelegate.swift
func application(_ application: UIApplication,didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        return FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions)
}

func application(_ application: UIApplication,open url: URL,sourceApplication: String?,annotation: Any) -> Bool {
        return FBSDKApplicationDelegate.sharedInstance().application(application, open: url, sourceApplication: sourceApplication, annotation: annotation)
}

func applicationDidBecomeActive(_ application: UIApplication) {
        FBSDKAppEvents.activateApp()
}

괜찮은 것 같습니다.

ViewController.swift



FacebookSDK를 먼저 import
이쪽은 로그인계의 framework 「FBSDKLoginKit」도 import

ViewController.swift
import FBSDKCoreKit
import FBSDKLoginKit

「페이스 북으로 로그인」용의 Delegate 「FBSDKLoginButtonDelegate」를 상속

ViewController.swift
class ViewController: UIViewController,FBSDKLoginButtonDelegate {

ViewController.swift
// ログインのコールバック
func loginButton(_ loginButton: FBSDKLoginButton!, didCompleteWith result: FBSDKLoginManagerLoginResult!, error: Error!) {
}

// ログアウトのコールバック
func loginButtonDidLogOut(_ loginButton: FBSDKLoginButton!) { 
}

Facebook 로그인용 버튼이 SDK에 준비되어 있으므로, 그쪽을 사용해 보겠습니다.
let fbLoginBtn = FBSDKLoginButton()
fbLoginBtn.readPermissions = ["public_profile", "email"]
fbLoginBtn.center = self.view.center
fbLoginBtn.delegate = self
self.view.addSubview(fbLoginBtn)

이제 화면의 중간에 버튼이 추가됩니다.fbLoginBtn.readPermissions = ["public_profile", "email"]배열 안에는 사용하고 싶은 Facebook 정보의 이름을 넣는 것 같습니다.["public_profile", "email","user_friends"]라고 하면 친구 리스트의 정보 겟트 할 수 있는 것 같습니다. (시험하지 않음)

이미 로그인했을 때는 로그인을 날려 다음 화면으로 가고 싶네요.
그런 때는FBSDKAccessToken.current()가 nil인지 아닌지로 판정합시다.

이들을 조합하여
  • 시작
  • 이미 로그인했는지 확인 (로그인 된 경우 5로)
  • 그렇지 않으면 로그인 버튼 표시
  • 로그인 버튼으로 로그인
  • 모달 디스플레이에서 TOP 화면을 표시합니다

  • 하고 갑니다.

    ViewController.swift
    import UIKit
    import FBSDKCoreKit
    import FBSDKLoginKit
    class ViewController: UIViewController,FBSDKLoginButtonDelegate {
    
        override func viewDidLoad() {
            super.viewDidLoad()
        }
    
        override func viewDidAppear(_ animated: Bool) {
    //        ログイン済みかチェック
            if let _ = FBSDKAccessToken.current() {
    //            画面遷移
                performSegue(withIdentifier: "modalTop", sender: self)
            }else{
    //            FBログインボタン設置
                let fbLoginBtn = FBSDKLoginButton()
                fbLoginBtn.readPermissions = ["public_profile", "email"]
                fbLoginBtn.center = self.view.center
                fbLoginBtn.delegate = self
                self.view.addSubview(fbLoginBtn)
            }
        }
    
        override func didReceiveMemoryWarning() {
            super.didReceiveMemoryWarning()
        }
    
    //    ログインコールバック
        func loginButton(_ loginButton: FBSDKLoginButton!, didCompleteWith result: FBSDKLoginManagerLoginResult!, error: Error!) {
    //        エラーチェック
            if error == nil {
    //            キャンセルしたかどうか
                if result.isCancelled {
                    print("キャンセル")
                }else{
    //                画面遷移
                    performSegue(withIdentifier: "modalTop", sender: self)
                }
            }else{
                print("エラー")
            }
        }
    
    //    ログアウトコールバック
        func loginButtonDidLogOut(_ loginButton: FBSDKLoginButton!) {
    
        }
    
    }
    
    
    performSegue(withIdentifier: "modalTop", sender: self)이것이 TOP 화면으로 전환하는 세구에입니다.

    우선 이것으로 Facebook으로 로그인은 구현할 수 있었습니다.

    끝에



    첫 투고였지만 이렇게 쓰면서 앱을 만들고 있다고 기억하네요!
    다른 「○○로 로그인」도 조사해보고 싶습니다!

    의견 감상은 코멘트까지 부탁합니다.

    좋은 웹페이지 즐겨찾기