返回顶部
首页 > 资讯 > 移动开发 >IOS接入facebook详解
  • 604
分享到

IOS接入facebook详解

IOSfacebookSDK 2022-05-20 06:05:03 604人浏览 薄情痞子
摘要

facebook 接入 1.在 facebook 后台 配置 iOS 平台, 获取 fb appid store id 可以先随便找一个已存在的填入进去. 2.CocoaPods

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

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

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

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

--结束END--

本文标题: IOS接入facebook详解

本文链接: https://lsjlt.com/news/30483.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • IOS接入facebook详解
    facebook 接入 1.在 facebook 后台 配置 ios 平台, 获取 fb appid store id 可以先随便找一个已存在的填入进去. 2.CocoaPods ...
    99+
    2022-05-20
    IOS facebook SDK
  • Unity3D 接入IOS SDK
    Unity3D 开发游戏需要接入平台方的SDK才能够正式发布,本文记录IOS SDK接入的流程。Unity与IOS的互调要实现游戏SDK的接入,首先要解决的是Unity3D与原生IOS代码之间的相互调用问题。Unity使用C#作为开发语言,...
    99+
    2023-01-31
    Unity3D IOS SDK
  • Facebook Instant Game怎样接入广告 AUDIENCE NETWORK
    这篇文章跟大家分析一下“Facebook Instant Game怎样接入广告 AUDIENCE NETWORK”。内容详细易懂,对“Facebook Instant Game怎样接入广告 AUDIENCE NETWORK”感兴趣的朋友可以...
    99+
    2023-06-05
  • iOS 通用链接(Universal Link)配置详解
    iOS 通用链接(Universal Link)配置 什么是通用链接? 通用链接是iOS9推出的一项新功能,如果你的应用(app)支持通用链接(Universal Link)之后,i...
    99+
    2022-05-22
    iOS 通用链接
  • Facebook移动架构:Android Flux架构详解
      要为Android应用找到一个好的架构不是一件容易的事情。谷歌似乎不太在乎这个事情,因此在设计模式上,除了Activity 生命周期管理之外,再也没有官方的推荐。  ...
    99+
    2022-06-06
    flux Android 架构
  • 详解iOS 验证码输入的实现思路
    如图所示,现在很多App采用了类似下划线、方块等方式的验证码输入,直观美观!对于这种效果的实现方式,大概有以下几种方式: 1.多个UITextField组成 这种方式好处是有光标闪...
    99+
    2022-05-23
    ios 验证码 输入
  • iOS TestFlight 使用详解
    TestFlight测试分为内部测试和外部测试,各有利弊  内部测试-->利:测试的App不需要提交审核,弊端:只可以通过邮件发送邀请码,而且邮箱必须是注册了App ID的邮箱 外部测试-->利:不仅可以通过邮箱,还可以通过链接,把链接发给...
    99+
    2023-09-04
    ios
  • IOS客户端接入微信支付
    实际上,从代码的角度,调起支付APP就是把一些关键的参数通过一定方式打包成为一个订单,然后发送到支付平台的服务器。所以,只要搞清楚了参数设置,搞清楚了每个支付平台的SDK里面一些关键...
    99+
    2022-05-20
    ios 微信支付 微信客户端
  • 一道值得深入思考的iOS面试题详解
    前言 最近在群里看到有人发的一道面试题,题目如下: @interface Spark : NSObject @property(nonatomic,copy) NSStr...
    99+
    2022-05-22
    ios 面试题
  • PHP 接入shopify SDK 详细讲解
    前言: 有关 shopify 的实操例子太少了 为了给后面的人行以方便,也为了我下次不那么麻烦。我打算记录一下我的代码以及操作流程 首先既然是有关shopify的操作,你必须有一个shopify账号.(创建流程就不在这里进行描述) ...
    99+
    2023-09-04
    php 经验分享 其他
  • Java中接口的深入详解
    目录一、前言二、接口接口的格式三、接口的特点接口的使用四、类与接口的关系接口多重继承的好处练习总结一、前言 前面我们说了抽象类的概述,我们对抽象类也有个认识和理解了,现在我们学习十分...
    99+
    2024-04-02
  • 详解iOS平台调用后台接口的正确姿势
    前言 做iOS开发,除非你做的是单机应用,否则一定避免不了接口调用,也就是所谓的API调用。 而对于这方面,每个公司定义接口的格式不尽相同,从而导致我们的代码没法达到通用。 甚...
    99+
    2022-05-27
    iOS 平台调用 后台接口
  • IOS NSTimeInterval使用案例详解
    一 ios 获取时间间隔 想在程序开始或者进入某个界面 ,到结束程序或退出某个界面,获取到这个持续时间. 获取到这个时间还需要转化一个取得时分秒. -(NSString *)ge...
    99+
    2022-06-01
    IOS NSTimeInterval
  • ios的签名机制详解
    目录前言目的非对称加密最简单的签名新的需求加点东西最终流程概念和操作其他发布方式P.S.一些疑问企业证书App Store 加密本地私钥前言 iOS 签名机制挺复杂,各种证书,Pr...
    99+
    2022-05-31
    ios 签名机制
  • iOS通用链接(UniversalLink)配置详细流程
    一、Universal Links 配置过程 登录苹果账号后,点击创建的APP 的Bundle ID,跳转到APP 信息页面。 记录下Team ID 和Bundle ID 备用。 勾选上 功能列表上的 ”Associated Domain...
    99+
    2023-09-02
    ios cocoa macos
  • Facebook开源一站式服务python时序利器Kats详解
    目录什么是 Kats?安装 Kats将数据转换为时间序列预测从使用 Prophet 进行预测开始:可视化Holt-Winters检测变化点机器学习深度学习孤立点检测时间序列特征小结 ...
    99+
    2024-04-02
  • 深入讲解iOS开发中的UIViewController
    UIViewController顾名思义:视图控制器。应该在MVC设计模式中扮演控制层的角色。一些初学者在最开始的时候一直不理解为何有了UIView还要UIViewControlle...
    99+
    2022-05-20
    iOS
  • 服务端IOS订阅类型支付接入详细说明与注意事项
    一、说明 由于本人在开发ios订阅类型支付接入的时候,遇到了很多坑,也查了不少资料,逐步完善了整个ios订阅支付服务端接入的功能,在这里写下总结和一些注意事项的记录,方便未来需要重新接入或者避免一些不必要的坑,这里主要讲的是服务端的接入。 ...
    99+
    2023-09-11
    ios java 支付
  • iOS关联对象示例详解
    背景 在iOS开发中如果我们想给一个对象动态添加属性或者给category添加属性的时候,都是通过runtime的关联对象去实现,那我们添加的属性到底是如何存取的呢?是直接添加到了...
    99+
    2022-06-02
    ios 关联 对象
  • 详解IOS WebRTC的实现原理
    目录概述P2P连接模式WebRTC的服务器与信令WebRTC的NAT/防火墙穿越技术概述 它在2011年5月开放了工程的源代码,在行业内得到了广泛的支持和应用,成为下一代视频通话的标...
    99+
    2022-05-15
    IOS WebRTC
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作