最近在實做facebook登入功能,發現網路上許多swift版本的教學(甚至包含facebook for developer內的文件…)都有點過時,
紀錄一下目前找到比較新的使用facebook login sdk方法:
1.前置作業:
上Facebook for developer建立專屬應用程式、使用cocoapod加入Facebook sdk與設定info.plist檔等等(這些都跟objc一樣)
2.在AppDelegate中加入/修改以下程式碼:
import FacebookCore
func applicationDidBecomeActive(_ application: UIApplication) { AppEventsLogger.activate(application) }
func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool { return SDKApplicationDelegate.shared.application(app, open: url as URL!, options: options) }
3.在ViewController中加入/修改以下程式碼:
import FacebookLogin import FacebookCore
override func viewDidLoad() { super.viewDidLoad() if let accessToken = AccessToken.current { fetchProfile() } }
自訂的facebook login按鈕
// Facebook login button action @IBAction func fbLoginAction(_ sender: UIButton) { let loginManager = LoginManager() loginManager.logIn([ .publicProfile,.email ], viewController: self) { loginResult in print(loginResult) self.fetchProfile() } }
取得使用者資料:包含email、姓名、性別、大頭照(大圖)
func fetchProfile(){ //use picture.type(large) for large size profile picture let parameters = ["fields": "email,name,gender,picture.type(large)"] let request = GraphRequest(graphPath: "me", parameters: parameters, accessToken: AccessToken.current, httpMethod: .GET, apiVersion: FacebookCore.GraphAPIVersion.defaultVersion) request.start { (response, result) in switch result { case .success(let value): print(value.dictionaryValue!) case .failed(let error): print(error) } } }
透過以上步驟來使用Facebook SDK讓使用者登入並取得使用者資料~~