Facebook?
社交軟件是移動開發必不可少的一個話題,本文介紹了Facebook SDK 4.0 的編程入門經驗,即通過Facebook登錄的方法,已經獲取用戶的用戶名,email的方法。
工具/原料
Xcode
Swift
Facebook iOS SDK 4.0及以上版本
在Facebook中創建一個App
去Facebook開發者網頁,My App -> Add New App
選擇平臺:iOS
創建新App ID
輸入Bundle Id,必須與Xcode中iOS項目的Bundle id一致
注意此時app還不能使用,必須在Status & Review中允許才行
使用Xcode創建項目
創建一個新項目 FacebookDemo,選Swift,然後關閉Xcode
在Xcode項目文件的目錄下,創建一個Podfile,加入:
pod 'FBSDKCoreKit'
pod 'FBSDKLoginKit'
pod 'FBSDKShareKit'
命令行運行: pod install
打開 FacebookDemo.xcworkspace
創建一個頭文件:FB_ObjectiveC_Bridging.h,加入:
#import
#import
將此.h加入Xcode中
設置.plist文件,加入FacebookAppID 和 FacebookDisplayName(注意圖中的FacebookId應為FacebookAppID)
AppDelegate.swift中的代碼:
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { // Override point for customization after application launch. return FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions) } func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject?) -> Bool { return FBSDKApplicationDelegate.sharedInstance().application( application, openURL: url, sourceApplication: sourceApplication, annotation: annotation) } func applicationDidBecomeActive(application: UIApplication) { // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. FBSDKAppEvents.activateApp()
}
Facebook 登錄並獲取用戶信息
在Storyboard中增加一個按鈕UIButton和兩個UILabel(用於用戶名和電郵的顯示),並且鏈接到代碼中
設置Facebook登錄按鈕的代理以及權限:
self.fbLoginButton.readPermissions = ["public_profile", "email", "user_friends"]
self.fbLoginButton.delegate = self
注意:要獲取電郵信息,必須設置“email”權限
登錄代理:
func loginButton(loginButton: FBSDKLoginButton!, didCompleteWithResult result: FBSDKLoginManagerLoginResult!, error: NSError!) {
if ((error) != nil) {
// Process error
}
else if result.isCancelled {
// Handle cancellations
}
else {
if result.grantedPermissions.contains("email") {
if FBSDKAccessToken.currentAccessToken() != nil {
let graphRequest : FBSDKGraphRequest = FBSDKGraphRequest(graphPath: "me", parameters: nil)
graphRequest.startWithCompletionHandler({ (connection, result, error) -> Void in
if ((error) != nil) {
println("Error: \(error)")
}
else {
println("fetched user: \(result)")
self.lblEmail.text = result["email"] as? String
self.lblUserName.text = result["name"] as? String
}
})
}
}
}
}
至此用戶就可以登錄並獲取用戶信息了。值得注意的是此登錄過程就是獲取oauth2中獲取access_token的方法,是其他任何Facebook操作的基礎。