Facebook?

Tags: 用戶,

社交軟件是移動開發必不可少的一個話題,本文介紹了Facebook SDK 4.0 的編程入門經驗,即通過Facebook登錄的方法,已經獲取用戶的用戶名,email的方法。

工具/原料

Xcode

Swift

Facebook iOS SDK 4.0及以上版本

在Facebook中創建一個App

去Facebook開發者網頁,My App -> Add New App

Facebook iOS SDK編程入門

選擇平臺:iOS

Facebook iOS SDK編程入門

創建新App ID

Facebook iOS SDK編程入門

Facebook iOS SDK編程入門

輸入Bundle Id,必須與Xcode中iOS項目的Bundle id一致

Facebook iOS SDK編程入門

注意此時app還不能使用,必須在Status & Review中允許才行

Facebook iOS SDK編程入門

Facebook iOS SDK編程入門

使用Xcode創建項目

創建一個新項目 FacebookDemo,選Swift,然後關閉Xcode

在Xcode項目文件的目錄下,創建一個Podfile,加入:

pod 'FBSDKCoreKit'

pod 'FBSDKLoginKit'

pod 'FBSDKShareKit'

命令行運行: pod install

打開 FacebookDemo.xcworkspace

創建一個頭文件:FB_ObjectiveC_Bridging.h,加入:

#import #import

#import

將此.h加入Xcode中

Facebook iOS SDK編程入門

設置.plist文件,加入FacebookAppID 和 FacebookDisplayName(注意圖中的FacebookId應為FacebookAppID)

Facebook iOS SDK編程入門

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 iOS SDK編程入門

設置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操作的基礎。

Facebook iOS SDK編程入門

相關問題答案