Facebook SDK(iOS)初学讲解

简介: Facebook SDK已经升级到3.1.1了,最近使用了其最新的sdk,完成项目内登陆和发帖两个基本功能。这两个功能在Facebook SDK里面已经单独存在了,使用起来非常简单。

Facebook SDK已经升级到3.1.1了,最近使用了其最新的sdk,完成项目内登陆和发帖两个基本功能。这两个功能在Facebook SDK里面已经单独存在了,使用起来非常简单。但是使用Facebook SDK的难点是理解Facebook的构建基础。这里除了将基本的操作外,也说点当前我的理解(也是从官网文档中看的,但理解不一定正确),不过推荐读者还是多去官网自己看吧,毕竟那里是根本。


首先Facebook里面有两种基本类型,一个是对象,一个连接。对象就是指Facebook的人、图片、事件等各种独立单位。连接是指对象间的联系。人有喜好这样一个连接,通过喜好连接,我们能找到人所有喜欢的东西。Facebook将所有的对象通过连接织成社交网络。这是一个Facebook最基本的概念(我觉得)。基于这个社交图(或称社交网络),我们可以通过graph path去访问这个网络内的任何信息,只要你有访问权限。一个人一般有很多connection,如Feed(实时消息),likes,friends。我们可以通过"me/feed“去访问实时消息,也可以发布消息。

//session isn't open, so we have to open it
    if( ![[FBSession activeSession] isOpen] )
    {
        //open session with write permission
        if( [FBSession openActiveSessionWithPublishPermissions:[NSArray arrayWithObject:@"publish_actions"] defaultAudience:FBSessionDefaultAudienceEveryone allowLoginUI:YES completionHandler:^(FBSession *session, FBSessionState status, NSError *error) {
             
             if( error )
             {
             FACEBOOK_LOG(@"facebook---> openActiveSessionWithPublishPermissions() failed!!!!!!!!!!");
             }
             else
             {
             FACEBOOK_LOG(@"facebook---> openActiveSessionWithPublishPermissions() successfully.");
             }
             
             //invokde delegate
             if( m_pDelegate )
             {
             m_pDelegate->sessionStateChange( session, status, error );
             }
             }] )
        {
            FACEBOOK_LOG(@"facebook---> openActiveSessionWithPublishPermissions() return true.");
        }
        else
        {
            FACEBOOK_LOG(@"facebook---> openActiveSessionWithPublishPermissions() return false.");
            return false;
        }
    }
openActiveSessionWithPublishPermissions()中Facebook的Reference已经讲的很详细了。但其中allowLoginUI很重要,一般就设置为YES,意思是指是否在用户没有登陆的时候弹出登陆界面让用户先登陆。由于Facebook SDK会保留令牌,所以一旦一登陆了,很难重现登陆界面了,因为Facebook会用程序上一次申请的令牌(令牌不依附于程序,及时程序关闭,令牌还是被存放起来)。虽然Facebook SDK里面有closeAndClearToken(),但是这个函数并不一定管用(至少我每次关闭程序是都调用了这个函数,但只有几次提示弹出登陆界面)。


一旦登陆并拥有写权限,我们就可以发消息了。

NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
                                   m_pstrLastMessage, @"message",
                                   @"http://www.yourweb.com", @"link",
                                   @"http://static.ak.fbcdn.net/rsrc.php/v2/y2/r/lpa-16iu9uw.gif", @"picture",
                                   @"China star", @"name",
                                   @"I love China", @"description",
                                   nil];
    [FBRequestConnection startWithGraphPath:@"me/feed" parameters:params HTTPMethod:@"POST" completionHandler:^(FBRequestConnection *connection, id result, NSError *error) {
     
     if( error )
     {
      FACEBOOK_LOG2( @"facebook---> message( \"%@\" ) posted failed!!!!!!!!!", m_pstrLastMessage );
     }
     else
     {
      FACEBOOK_LOG2( @"facebook---> message( \"%@\" ) posted successfully.", m_pstrLastMessage );
     }
     }];
一个feed里面会有很多属性(包括必须属性如字符串或者连接,可选属性图片,标题等)。这些可以到Facebook SDK官网查阅,在Graph API一类中。一同的connection对应不同的属性参数,可以去官网查看。


就这两点我们就可以实现Facebook中最常用的功能了。另外很多很多概念还是去官网查阅吧,连着看了3个小时,我看的都已经头疼了,想不到一个Facebook好多概念,特别是网络这方面的。要想全面把握需要很多功夫,以后需要什么功能在查阅吧!

相关文章
|
7月前
|
开发工具 iOS开发 计算机视觉
|
6月前
|
开发工具 iOS开发 容器
【Azure Blob】关闭Blob 匿名访问,iOS Objective-C SDK连接Storage Account报错
【Azure Blob】关闭Blob 匿名访问,iOS Objective-C SDK连接Storage Account报错
|
6月前
|
开发工具 图形学 iOS开发
Unity与IOS⭐Unity接入IOS SDK的流程图
Unity与IOS⭐Unity接入IOS SDK的流程图
|
7月前
|
开发工具 iOS开发 容器
【Azure Blob】关闭Blob 匿名访问,iOS Objective-C SDK连接Storage Account报错
iOS Objective-C 应用连接Azure Storage时,若不关闭账号的匿名访问,程序能正常运行。但关闭匿名访问后,上传到容器时会出现错误:“Public access is not permitted”。解决方法是将创建容器时的公共访问类型从`AZSContainerPublicAccessTypeContainer`改为`AZSContainerPublicAccessTypeOff`,以确保通过授权请求访问。
【Azure Blob】关闭Blob 匿名访问,iOS Objective-C SDK连接Storage Account报错
|
9月前
|
开发工具 iOS开发 Perl
iOS使用SDK静态库
iOS使用SDK静态库
69 0
|
10天前
|
前端开发 Java Shell
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
85 20
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
|
6月前
|
JavaScript 前端开发 Java
[Android][Framework]系统jar包,sdk的制作及引用
[Android][Framework]系统jar包,sdk的制作及引用
161 0
|
3月前
|
Java Linux API
Android SDK
【10月更文挑战第21天】
141 1
|
4月前
|
程序员 开发工具 Android开发
Android|使用阿里云推流 SDK 实现双路推流不同画面
本文记录了一种使用没有原生支持多路推流的阿里云推流 Android SDK,实现同时推送两路不同画面的流的方法。
89 7
|
6月前
|
开发工具 Android开发
解决Android运行出现NDK at /Library/Android/sdk/ndk-bundle did not have a source.properties file
解决Android运行出现NDK at /Library/Android/sdk/ndk-bundle did not have a source.properties file
234 4
解决Android运行出现NDK at /Library/Android/sdk/ndk-bundle did not have a source.properties file

热门文章

最新文章

  • 1
    【05】2025年1月首发完整版-篇幅较长-苹果app如何上架到app store完整流程·不借助第三方上架工具的情况下无需花钱但需仔细学习-优雅草央千澈详解关于APP签名以及分发-们最关心的一篇来了-IOS上架app
  • 2
    uniapp开发ios打包Error code = -5000 Error message: Error: certificate file(p12) import failed!报错问题如何解决
  • 3
    【11】flutter进行了聊天页面的开发-增加了即时通讯聊天的整体页面和组件-切换-朋友-陌生人-vip开通详细页面-即时通讯sdk准备-直播sdk准备-即时通讯有无UI集成的区别介绍-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
  • 4
    【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
  • 5
    【01】完整开发即构美颜sdk的uni官方uts插件—让所有开发者可以直接使用即构美颜sdk的能力-优雅草卓伊凡
  • 6
    AutoTalk第十三期-应知必会的自动化工具-阿里云SDK支持策略(一)
  • 7
    自动化AutoTalk第十期:应知必会的自动化工具-阿里云SDK
  • 8
    从iOS 11看怎样设计APP图标
  • 9
    iOS7应用开发7:自定义视图、手势操作
  • 10
    2022最新苹果iOS证书申请教程