// ===== Info.plist (部份) =====
<!-- Facebook -->
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLSchemes</key>
<array>
<string>fb取代成fbID</string>
</array>
</dict>
</array>
<key>FacebookAppID</key>
<string>取代成fbID</string>
<key>FacebookDisplayName</key>
<string>取代成FBAppName</string>
<key>LSApplicationQueriesSchemes</key>
<array>
<string>fbauth2</string>
<string>fbapi</string>
<string>fb-messenger-api</string>
<string>fbshareextension</string>
</array>
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
// ===== AppDelegate.swift =====
import UIKit
import FBSDKCoreKit
import FBSDKLoginKit
import FBSDKShareKit
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions)
return true
}
func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject) -> Bool {
return FBSDKApplicationDelegate.sharedInstance().application(application, openURL: url, sourceApplication: sourceApplication, annotation: annotation)
}
func applicationWillResignActive(application: UIApplication) {
}
func applicationDidEnterBackground(application: UIApplication) {
}
func applicationWillEnterForeground(application: UIApplication) {
}
func applicationDidBecomeActive(application: UIApplication) {
FBSDKAppEvents.activateApp()
}
func applicationWillTerminate(application: UIApplication) {
}
}
import UIKit
import AssetsLibrary
import FBSDKCoreKit
import FBSDKLoginKit
class ViewController: BaseViewController, FBSDKLoginButtonDelegate {
// === UI ===
@IBOutlet weak var fbLoginButton: FBSDKLoginButton!
@IBOutlet weak var fbProfilePictureView: FBSDKProfilePictureView!
override func viewDidLoad() {
super.viewDidLoad()
fbLoginButton.delegate = self
fbLoginButton.readPermissions = ["public_profile", "email"]
fbProfilePictureView.profileID = "me"
FBSDKProfile.enableUpdatesOnAccessTokenChange(true)
let notificationCenter = NSNotificationCenter.defaultCenter()
notificationCenter.addObserver(self, selector: #selector(fbLoginHandler), name: FBSDKAccessTokenDidChangeNotification, object: nil)
notificationCenter.addObserver(self, selector: #selector(fbProfileHandler), name: FBSDKProfileDidChangeNotification, object: nil)
}
// === Facebook ===
/**
登入或登出狀態變更
- parameter notification: notification description
*/
func fbLoginHandler(notification: NSNotification)
{
print(#function)
// 已登入FB
if let fbToken = FBSDKAccessToken.currentAccessToken() {
print("已登入FB")
print(fbToken.userID)
}
else
{
print("登出FB")
}
}
/**
Profile狀態變更
- parameter notification: notification description
*/
func fbProfileHandler(notification: NSNotification)
{
guard let _ = FBSDKProfile.currentProfile() else {
return
}
if let _ = FBSDKAccessToken.currentAccessToken() {
let parameter = ["fields": "id,name,email"]
let fbRequest = FBSDKGraphRequest(graphPath: "me", parameters: parameter)
fbRequest.startWithCompletionHandler({ (connection, result, error) in
guard error == nil else {
print(error.localizedDescription)
return
}
guard let info = result as? NSDictionary else {
print("result is nil")
return
}
print(info)
})
}
}
/**
登入事件
- parameter loginButton: loginButton description
- parameter result: result description
- parameter error: error description
*/
func loginButton(loginButton: FBSDKLoginButton!, didCompleteWithResult result: FBSDKLoginManagerLoginResult!, error: NSError!)
{
// 同意的權限
guard let permissions = result.grantedPermissions else {
return
}
for item in permissions
{
print(item)
}
print(result)
}
/**
登出事件
- parameter loginButton: loginButton description
*/
func loginButtonDidLogOut(loginButton: FBSDKLoginButton!)
{
print(#function)
}
}
參考資料:
https://developers.facebook.com/docs/facebook-login/permissions#reference-email
https://developers.facebook.com/docs/facebook-login/permissions/overview
https://developers.facebook.com/docs/facebook-login/ios/advanced
https://developers.facebook.com/docs/facebook-login/ios
留言列表