IOS接入facebook詳解
facebook 接入
1.在 facebook 后臺 配置 ios 平臺, 獲取 fb appid
store id 可以先隨便找一個已存在的填入進去.
2.CocoaPods 引入幾個核心庫
pod 'FBSDKCoreKit', '~> 9.0.1' pod 'FBSDKLoginKit', '~> 9.0.1' pod 'FBSDKShareKit', '~> 9.0.1'
pod 工程構建出 靜態(tài)庫丟到 /Users/XXX/Library/Developer/Xcode/DerivedData/Build/Products
對應 真機/模擬器 的目錄下, 然項目工程編譯時可以鏈接到靜態(tài)庫
3.在 info.plist 文件的 <dict>...</dict>
內加入配置
<key>CFBundleURLTypes</key> <array> <dict> <key>CFBundleURLSchemes</key> <array> <string>fb[APP_ID]</string> </array> </dict> </array> <key>FacebookAppID</key> <string>[APP_ID]</string> <key>FacebookDisplayName</key> <string>[APP_NAME]</string> <key>LSApplicationQueriesSchemes</key> <array> <string>fbapi</string> <string>fbapi20130214</string> <string>fbapi20130410</string> <string>fbapi20130702</string> <string>fbapi20131010</string> <string>fbapi20131219</string> <string>fbapi20140410</string> <string>fbapi20140116</string> <string>fbapi20150313</string> <string>fbapi20150629</string> <string>fbapi20160328</string> <string>fbauth</string> <string>fb-messenger-share-api</string> <string>fbauth2</string> <string>fbshareextension</string> </array>
[APP_ID] 替換 fb appid.
[APP_NAME] 替換為 app 名.
4.代碼
在 app 啟動完后初始化 sdk
// AppDelegate.m @implementation AppDelegate - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { [[FBSDKApplicationDelegate sharedInstance] application:application didFinishLaunchingWithOptions:launchOptions]; return YES; } - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url options:(nonnull NSDictionary<UIApplicationOpenURLOptionsKey, id> *)options{ [[FBSDKApplicationDelegate sharedInstance] application:application openURL:url options:options]; return YES; }
iOS 13 將打開網址的功能移到了 SceneDelegate 中
// SceneDelegate.m #import <FBSDKCoreKit/FBSDKCoreKit.h> @import FacebookCore; @implementation SceneDelegate - (void)scene:(UIScene *)scene openURLContexts:(NSSet<UIOpenURLContext *> *)URLContexts{ UIOpenURLContext *context = URLContexts.allObjects.firstObject; [FBSDKApplicationDelegate.sharedInstance application:UIApplication.sharedApplication openURL:context.URL sourceApplication:context.options.sourceApplication annotation:context.options.annotation]; }
登錄, 登出, 獲取用戶信息, 展示 登錄頁面
#import "FBHelper.h" #import <FBSDKCoreKit/FBSDKCoreKit.h> #import <FBSDKLoginKit/FBSDKLoginKit.h> @implementation FBHelper static FBHelper *_sharedIns = nil; +(instancetype) shareInstance { static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ _sharedIns = [[self alloc] init] ; }) ; return _sharedIns ; } -(void)showLoginBtn:(UIView*)view{ FBSDKLoginButton *loginButton = [[FBSDKLoginButton alloc] init]; loginButton.center = view.center; [view addSubview:loginButton]; } -(void)login:(UIViewController*)vc{ FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init]; [login logInWithPermissions:@[@"publish_actions"] fromViewController:vc handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) { if (error) { NSLog(@"--- login fail, err: %@", error); return; } FBSDKAccessToken* accessToken = [FBSDKAccessToken currentAccessToken]; if (accessToken) { NSLog(@"--- login success, userId: %@, token: %@", accessToken.userID, accessToken.tokenString); return; } NSLog(@"--- login cancel"); }]; } -(void)logout{ if ([FBSDKAccessToken currentAccessToken]) { NSLog(@"--- has accessToken"); FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init]; [login logOut]; } else { NSLog(@"--- no accessToken"); } } -(void)getUserData{ if ([FBSDKAccessToken currentAccessToken]) { if ([FBSDKAccessToken currentAccessToken]) { [[[FBSDKGraphRequest alloc] initWithGraphPath:@"me?fields=id,name,token_for_business" parameters:nil] startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) { if (!error) { NSLog(@"--- fetched success, result: %@", result); } else { NSLog(@"--- fetched error: %@", error); } }]; } } else { NSLog(@"--- no accessToken"); } } @end
踩坑
編譯報錯: 找不到 swift 相關文件
報錯: Undefined symbol: __swift_FORCE_LOAD_$_
原因是因為 sdk 使用了 swift, 而工程配置里沒有配置 swift 頭文件搜索的路徑.
解決辦法很簡單: 創(chuàng)建一個 swift 文件即可, xcode 會提示創(chuàng)建橋接文件 Create Bridging Header
以上就是IOS接入facebook詳解的詳細內容,更多關于IOS接入facebook的資料請關注腳本之家其它相關文章!
相關文章
iOS Xcode升級Xcode15報錯SDK does not contain
這篇文章主要為大家介紹了iOS Xcode 升級Xcode15報錯: SDK does not contain 'libarclite'解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-11-11Objective-C中NSNumber與NSDictionary的用法簡介
這篇文章主要介紹了Objective-C中NSNumber與NSDictionary的用法簡介,雖然Objective-C即將不再是iOS的主流開發(fā)語言...well,需要的朋友可以參考下2015-09-09iOS設置UIButton文字顯示位置和字體大小、顏色的方法
這篇文章給大家分享了iOS如何設置UIButton的文字顯示位置和字體的大小、顏色,文中給出了示例代碼,相信對大家的學習和理解很有幫助,有需要的朋友們下面來一起看看吧。2016-09-09Xcode 9下適配iPhoneX導致iOS 10不兼容問題的解決方法
這篇文章主要給大家介紹了關于Xcode 9下適配iPhoneX導致iOS 10不兼容問題的解決方法,文中通過圖文介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。2018-04-04iOS利用UITableView設置全屏分隔線的3種方法總結
這篇文章主要介紹了關于iOS利用UITableView設置全屏分隔線的幾種方法的相關對比,分析這三種的各自優(yōu)缺點,并且分享了設置UITableView的單元格分割線離屏幕左右的距離為0的方法,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面隨著小編來一起看看吧。2017-11-11