原文地址:新浪微博iOS版SDK“宝玉XP”框架 使用心得 教你如何把它加到你的项目中作者:spiger

[转自网络]

声明:这是一篇菜鸟文章,主要目的就是教你怎么把新浪微博的SDK加到你的项目中 然后可以使用他的一些基本功能。

牛顿说过:我现在哪怕有一点点成就那都是因为我站在大个子的肩膀上!

所以我们要感谢技术大牛们在网络上分享的资料   而且 宝玉xp 在微博上还耐心的回答了我的问题。

这个是我的主要参考链接http://www.cocoachina.com/bbs/read.php?tid=73476 建议大家先看一下,主要是讲那个OAuth授权机制的。

虽然现在我对新浪OAuth授权机制还是不明白 但是怎么用我还是清楚的。现在我就说一下怎么让这个玩意儿在你项目中跑起来。

第一步 去新浪官方下载SDK http://open.weibo.com/wiki/SDK

请注意我下载的不是新浪官方的版本 而是由网友 宝玉xp提供的版本 这个也是新浪官方认可的

这个是下载链接
https://github.com/JimLiu/WeiboSDK

然后打开解压 这里我提一下我下面说到的方法或者文件都是来自 SinaWeiboOAuthDemo 这个例子的  大家可以参照看一下

第二步 新建一个你的工程 随便那个模板 我就以空模板为例说一下

在你使用微博功能的这个controller必须是一个 UINavigationController 的输出口 这个能明白吧?

现在你可以把新浪微博SDK的文件加过来了

具体都那些文件呢? 除了例子里边的RootViewController SinaWeiboOAuthDemoAppDelegate 不加 其他的都加

那如果你把Resources或者其他不相干的文件也加过来了 那我无话可说

添加framework 这个应该都知道吧 反正我也没记他到底用的那几个framework 就照着例子代码 它有的就都加上

我在这里解决的都是我在使用中遇到的问题 所以可能会有一些不周到的地方 还需要大家自己学习 毕竟咱们都是离开幼儿园的人了。

请注意:这个时候你编译会错误 别着急这个问题我已经解决了

点击查看第一个错误是提示你  TouchXML.h  这个文件找不到 我靠太坑爹了!竟然会找不到文件 怎么搞的?

当时我就去找这个文件 我日 没找到! 那怎么办呀? 我就想 别的文件好好的你不用 非要用这个没有的 那我索性连你也删了

找到  CXMLElementAdditions  这个文件把它的.h .m 都删了。

OK 保存 编译 又有错误! 还他妈是二十多个! 别慌 这个问题我也解决了

找到 OAToken_KeychainExtensions 这个文件 把它的.h .m 也都删了。 OK现在编译已经没问题了。

第三步

这个时候大家可能会问 在原贴中提到 RootViewController 是SDK和你交互的类 但是我没用这个,

因为具体怎么交互或者使用他那些功能都是你说了算的 所以我们根据自己的功能来实现它。

首先在你的 controller .h文件里添加这两个委托 OAuthControllerDelegate, OAuthEngineDelegate

然后实现它, 怎么实现? 你不知道! 我也不知道!

幸好有人知道 两个委托一共六个方法在例子代码 RootViewController.m 的最下边 你把复制过来就可以了 记住:这个很关键!

其中OAuthEngineDelegate 这个委托方法是用来保存和修改授权信息的 有了它你只需要授权一次 然后随时都可以使用他的功能了。

现在开始添加授权方法了 你必须添加一个 OAuthEngine 类的全局变量 然后把他初始化

if (!_engine){
        _engine = [[OAuthEngine alloc] initOAuthWithDelegate: self];
        _engine.consumerKey = kOAuthConsumerKey;
        _engine.consumerSecret = kOAuthConsumerSecret;
} 这个是初始化方法 必须的! 至于那个宏是怎么来 这个你应该知道  这两个宏是和你应用相关的Key

然后用 performSelector 执行这个方法

- (void)loadTimeline {
    UIViewController *controller = [OAuthController controllerToEnterCredentialsWithEngine: _engine delegate: self];
     
    if (controller){
        [self presentModalViewController: controller animated: YES];
    }
    else {
        NSLog(@"Authenicated for %@..", _engine.username);
        [OAuthEngine setCurrentOAuthEngine:_engine];
        [self loadData];

}
}

这也是一个非常重要的方法 具体怎么关键我也说不清楚 但是我知道它是干啥的

if语句在第一次授权的时候会调用 如果授权完成了 每次都会调用else里边的语句

所以 [self loadData]; 获取数据的方法调用就添在这就可以了  同时你也可以根据它执行了那句来确定到底有没有授权。

OK 认证步骤就完成了

以后不管你什么地方想用微博功能 只要添加协议 实现委托方法 然后再加上 上面的这两个方法 你就能正常的使用了。

最后一步 获取数据

具体数据怎么用是你的事情 例子里边是获取了登陆用户的微博信息 然后把它弄到一个tableView里边

获取数据主要是两种类型

一个是获取微博信息 二获取用户资料

这里有两个数据类说一下

Status 他用来存储微博信息的类

User 用来存储用户信息的类

所以你获取到这两种数据的处理方法有些区别

开始获取数据了 你必须初始化 WeiboClient 这个类的一个对象 用来请求服务器数据 具体怎么请求 管他呢!你只要给他传递正确的参数就可以了。

weiboClient = [[WeiboClient alloc] initWithTarget:self 
                                               engine:_engine
                                               action:@selector(followDidReceive:obj:)];

这是初始化方法 其中那个 engine 参数就是刚才你初始化好的OAuthEngine 对象

这里的 selector 方法很重要 他指的就是 获取完数据以后要调用的方法 也就是你接收到数据然后怎么处理他

注意 获取微博信息 和用户信息 selector 方法不一样

why? 呵呵 因为你取的数据类型不一样么 幸好这个问题已经解决了

如果获取 Status 这个类的信息 就让它执行下面的这个方法

- (void)timelineDidReceive:(WeiboClient*)sender obj:(NSObject*)obj

如果获取 User 这个类的信息 就让它执行 这个方法

- (void)followDidReceive:(WeiboClient*)sender obj:(NSObject*)obj

具体怎么实现的 例子里边写的很清楚 至于取到数据你把它怎么存 怎么显示 是你的事情了

说了半天获取数据了 还没说到底我们要获取那些数据 什么类型 多少条?

这个时候你可以看一下 WeiboClient.m  这个文件 它里边方法都是按照各种条件取数据 如果你想自定义条件 可以参考它的写法自己实现

这里需要注意一下 就是  WeiboClient.m 这个文件中有几个方法的参数类型有问题 导致有的方法不能正常使用 别的暂时还没有发现

不过简单的修改一下就没问题了

这是我发现有问题的两个方法  两个 int 型参数类型应该改为 long long 型 方法的实现也应该相应改一下

- (void)follow:(int)userId
- (void)unfollow:(int)userId

至于其他的怎么改 你就参照它定义是数据模型 以他数据模型里边的类型为准

现在你就可以随心所欲的获取服务器上的数据了 官方文档上提供的功能你都可以实现。

总结一下

OAuthEngine 这个类是授权的核心类

OAuthController 是用来判断是否完成授权

WeiboClient 这个类是用来实现api功能的 比如获取微博数据 关注某人。。。

所以你要做的完成授权 然后每次获取数据用已经授权过的 OAuthEngine 类对象做参数就可以了。

现在我做了一个功能就是自动关注 就是只要你用我的应用登陆了微博 我就帮你关注我指定的某个人 呵呵 是不是很淫荡?

demo我就不上传了 写的很乱 大家参考 宝玉xp 的那个例子就可以了

新浪微博iOS版SDK“宝玉XP”框…相关推荐

  1. 新浪微博iOS版SDK“宝玉XP”框架学习笔记

    本文为论坛会员3h2om分享,对新浪微博iOS版SDK-"宝玉XP"框架进行研究所写的学习笔记,非常详细和精彩. 本人刚入学iOS开发,在学习的过程中,对新浪微博iOS版SDK-& ...

  2. 微博 php7,新浪微博PHP版SDK的导致20007错误

    本文章来转一篇关于新浪微博PHP版SDK的导致20007错误的解决方法,碰到此类问题的朋友可参考. 新浪微博有个高级接口'statuses/upload_url_text'(需要在open.weibo ...

  3. 微博php sdk,新浪微博PHP版SDK的导致20007错误

    新浪微博PHP版SDK的导致20007错误本文章来转一篇关于新浪微博PHP版SDK的导致20007错误的解决方法,碰到此类问题的朋友可参考. 新浪微博有个高级接口'statuses/upload_ur ...

  4. 使用友盟社会化分享IOS版SDK分享纯图片到微信

    本文和上一篇友盟社会化分享Android版是兄弟篇.其实本人用的是友盟Cocos2d-x的IOS版.对于普通IOS版如何分享纯图片到微信朋友圈,官网文档中已经说明的比较清楚,但是在Cocos2d-x版 ...

  5. 【记录】穿山甲广告iOS版SDK接入记录

    官方接入文档 获取 framework 文件 (平台接入模块->SDK下载与接入文档),要先注册 其他参考 Creator iOS接入穿山甲SDK 1.集成SDK 这里采用pod pod Ads ...

  6. Cocos2d-x 3.X, IOS版添加广点通插屏广告

    之前写了篇Cocos2d-x 3.X, iOS版添加广点通广告.但是那篇只提到了广告条的集成(有需要的,请戳这里).不少网友反映出对插屏广告的需求.所以在这里就把插屏广告的集成也写一遍.其实方法是一样 ...

  7. Cocos2d-x 3.X, IOS版添加广点通广告平台

    苹果自己的广告平台iAD在中国不好使,获取不到广告,所以必须搞个本土广告平台.首先想到的是广点通.可是广点通官方文档里没有针对Cocos2d-x的版本,所以只好自己摸索.在添加过程中确实遇到了不少问题 ...

  8. 开发腾讯移动游戏平台SDK ios版Ane扩展 总结

    本文记录了在开发 腾讯移动游戏平台SDK(MSDK) ios版Ane扩展 过程中所遇到的问题 文中非常多问题都是基础的问题.对object c和xcode配置了解不深入导致的.(没办法,开发ane的程 ...

  9. 微信sdk swift版_使用Swift 4的iOS版Google Maps SDK终极指南

    微信sdk swift版 by Dejan Atanasov 通过Dejan Atanasov 使用Swift 4的iOS版Google Maps SDK终极指南 (Your ultimate gui ...

最新文章

  1. Mac下mysql服务器安装
  2. (超贴心)Centos7安装2.5G网卡驱动(Realtek 3000)
  3. 程序局部性原理的一些思考
  4. Dubbo负载均衡与集群容错
  5. 数据结构整理中。。。
  6. 前端学习(2929):vue改变多个样式的组合
  7. win7下安装TensorFlow
  8. 拳王公社:网络引流的“4大核心秘诀“,让客户源源不断地加你
  9. 什么是计算机嵌套分类汇总,excel嵌套分类汇总 Excel表格中创建嵌套分类汇总和查看嵌套分类汇总明细的方法...
  10. 区块链项目开发指南大纲
  11. 微信信息轰炸【简易版】
  12. FasterRCNN之整体框架详解
  13. 【GitCracken】v8.1.1
  14. 把数组对象[{key1:val1},{key2:val2}] 的key val 分割成独立的数组
  15. label标签中for的使用
  16. 非标准分布随机数生成 - 逆变换ITM与舍选法Rejection
  17. C#批量剪切视频文件
  18. foj2198 Problem 2198 快来快来数一数 dp 矩阵快速幂
  19. 程序员请尊重前辈的代码
  20. 大数据来袭-玩微博共享也可以赚不少钱

热门文章

  1. H3C option43配置
  2. 计算机动画与应用领域,计算机动画的应用领域动漫设计毕业论文(最新).doc
  3. 超牛的π算法,只有3行代码,解析纠错。
  4. 美图进军“社交”领域:主要业务被重新划分为三块
  5. mongodb distinct条件查询
  6. OpenAPI报错集合
  7. now()与sysdate()区别:
  8. Cadence 16.6 Allegro差分线的蛇形走线
  9. 操作系统-内存管理(快表的地址变换机构,两级页表,虚拟内存的基本概念,基本页式管理下的页表和页面置换算法)
  10. python和java哪个更有潜力-Python VS Java,学哪个更有前途?