IOS接入facebook详解

2025-05-29 0 38

facebook 接入

1.在 facebook 后台 配置 ios 平台, 获取 fb appid

IOS接入facebook详解

store id 可以先随便找一个已存在的填入进去.

2.CocoaPods 引入几个核心库

?

1

2

3
pod 'FBSDKCoreKit', '~> 9.0.1'

pod 'FBSDKLoginKit', '~> 9.0.1'

pod 'FBSDKShareKit', '~> 9.0.1'

pod 工程构建出 静态库丢到 /Users/XXX/Library/Developer/Xcode/DerivedData/Build/Products 对应 真机/模拟器 的目录下, 然项目工程编译时可以链接到静态库

IOS接入facebook详解

3.在 info.plist 文件的 <dict>...</dict> 内加入配置

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14
<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

?

1

2

3

4

5

6

7

8

9

10

11

12
// 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 中

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14
// 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];

}

登录, 登出, 获取用户信息, 展示 登录页面

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71
#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 头文件搜索的路径.

解决办法很简单: 创建一个 swift 文件即可, xcode 会提示创建桥接文件 Create Bridging Header

以上就是IOS接入facebook详解的详细内容,更多关于IOS接入facebook的资料请关注快网idc其它相关文章!

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 IOS接入facebook详解 https://www.kuaiidc.com/89276.html

相关文章

发表评论
暂无评论