当前位置:   article > 正文

ios facebook 升级到最新版本 17.0.0

ios facebook 升级到最新版本 17.0.0

项目由 Objective-C 写成,而 facebook 新 sdk 由 swift 写的。

需要用到混编。

官网地址:Facebook-ios-sdk

1. 导入库

按官网文档说的做就行。

填入地址:GitHub - facebook/facebook-ios-sdk: Used to integrate the Facebook Platform with your iOS & tvOS apps.

添加目标要选,不然不能用。如果没有选,重新加也就可以。

添加成功后,这里可以看到。需要删除也在这里删除。

2.项目设置

建一个空的 .swift 文件,让项目支持 swift 混编。

facebook 用到的 framework 给加上:

AuthenticationServices.framework、SafariServieces.framework

解决引用错误:

3.加代码

引用头文件,AuthenticationServices,SafariServices 需要先加,不然 sdk 编译报错。FBSDKAccessToken.h, FBSDKAuthenticationToken.h 需要用 include,不然找不到。

  1. #import <AuthenticationServices/AuthenticationServices.h>
  2. #import <SafariServices/SafariServices.h>
  3. #import <FBSDKCoreKit/FBSDKCoreKit-Swift.h>
  4. #import <FBSDKLoginKit/FBSDKLoginKit-Swift.h>
  5. #include <FBSDKCoreKit/FBSDKAuthenticationToken.h>
  6. #include <FBSDKCoreKit/FBSDKAccessToken.h>

初始化 sdk:

  1. - (void)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
  2. {
  3. [[FBSDKApplicationDelegate sharedInstance] application:application
  4. didFinishLaunchingWithOptions:launchOptions];
  5. [FBSDKApplicationDelegate.sharedInstance initializeSDK];
  6. ...
  7. }
  8. +(NSString*) getPushKeyDeviceToken{
  9. return [TxApnsProxy getDeviceToken];
  10. }
  11. - (BOOL)application:(UIApplication *)application
  12. openURL:(NSURL *)url
  13. options:(nonnull NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options
  14. {
  15. ...
  16. if ([[FBSDKApplicationDelegate sharedInstance] application:application openURL:url options:options]) {
  17. return YES;
  18. }
  19. return YES;
  20. }
  21. - (BOOL)application:(UIApplication *)application
  22. openURL:(NSURL *)url
  23. sourceApplication:(nullable NSString *)sourceApplication
  24. annotation:(nonnull id)annotation
  25. {
  26. ...
  27. [[FBSDKApplicationDelegate sharedInstance] application:application
  28. openURL:url
  29. sourceApplication:sourceApplication
  30. annotation:annotation];
  31. return YES;
  32. }

登录调用:

注意调用登录模式:

FBSDKLoginConfiguration 中 tracking 为 FBSDKLoginTrackingLimited 时,result.token 会是空的。但是 result.authenticationToken 会有值。

  1. @property(nonnull,strong) FBSDKLoginManager* fbLogin;
  2. @synthesize fbLogin = _fbLogin;
  3. -(void) init
  4. {
  5. // 初始化的时候加
  6. self.fbLogin = [FBSDKLoginManager new];
  7. }
  8. -(void) login
  9. {
  10. FBSDKLoginConfiguration *configuration = [[FBSDKLoginConfiguration alloc] initWithPermissions:@[@"public_profile", @"email"]
  11. tracking:FBSDKLoginTrackingEnabled
  12. nonce:@"123"];
  13. [self.fbLogin logInFromViewController:[u8sdk (GetViewController)]
  14. configuration:configuration
  15. completion:^(FBSDKLoginManagerLoginResult * result, NSError *error) {
  16. if (!error && !result.isCancelled) {
  17. // Login successful-把 toekn 给服务器校验
  18. NSDictionary *callbackDict = [NSDictionary dictionaryWithObjectsAndKeys:result.token.tokenString, @"token", nil];
  19. [self (eventUserLogin):callbackDict];
  20. } else {
  21. NSDictionary *callbackDict = [NSDictionary dictionaryWithObjectsAndKeys:@"1", @"error", nil];
  22. [self (eventUserLogin):callbackDict];
  23. }
  24. }];
  25. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/494688
推荐阅读
相关标签
  

闽ICP备14008679号