利用iOS API编写简单微博客户端全过程

要编写社交网络客户端程序,可以大体上分为4个主要的步骤

下面我们按照这个流程,介绍一下:

1、引入Accounts和Social框架

工 程中需要引入Accounts和Social框架,Accounts框架中有进行用户账户认证所需类,Social框架中SLRequest类是我们所需 要的。添加具体步骤是选择工程中的TARGETS→WeiBo→Build Phases→Link Binary With Libraries,选择 右下角的“+”按钮,打开框架和库选择对话框。

分别选择Social.framework添加,再选择Accounts.framework添加。

2、用户账户认证

用 户账户认证使用ACAccount、ACAccountStore和ACAccountType类,ACAccount类是封装用户账户信息,这些信息存 储在账户数据库中,ACAccountStore类用来管理账户数据库,ACAccountType类描述了账户类型。

认证过程的模板代码如下:

Java代码  

  1. ACAccountStore *account = [[ACAccountStore alloc] init]; ①
  2. ACAccountType *accountType = [account accountTypeWithAccountTypeIdentifier:
  3. ACAccountTypeIdentifierSinaWeibo]; ②
  4. [account requestAccessToAccountsWithType:accountType options:nil
  5. completion:^(BOOL granted, NSError *error) ③
  6. {
  7. if (granted == YES) ④
  8. {
  9. NSArray *arrayOfAccounts = [account
  10. accountsWithAccountType:accountType]; ⑤
  11. if ([arrayOfAccounts count] > 0) ⑥
  12. {
  13. <认证通过>
  14. }
  15. };
  16. }];
ACAccountStore *account = [[ACAccountStore alloc] init]; ①

ACAccountType *accountType = [account accountTypeWithAccountTypeIdentifier:

ACAccountTypeIdentifierSinaWeibo]; ②

[account requestAccessToAccountsWithType:accountType options:nil

completion:^(BOOL granted, NSError *error) ③

{

if (granted == YES) ④

{

NSArray *arrayOfAccounts = [account

accountsWithAccountType:accountType]; ⑤

if ([arrayOfAccounts count] > 0) ⑥

{

<认证通过>

}

};

}];

3、发送请求

用户认证通过就可以进行发送使用SLRequest对象发送请求,创建SLRequest对象可以使用类级构造方法

Java代码  

  1. requestForServiceType:requestMethod:URL:parameters:,下面是代码是创建SLRequest对象:
  2. SLRequest *request = [SLRequest  requestForServiceType:SLServiceTypeSinaWeibo
  3. requestMethod:SLRequestMethodGET
  4. URL:requestURL
  5. parameters:parameters];
  6. 上面的代码还只是创建了SLRequest对象,我们还需要为请求对象设置账户信息,使用下面的语句:
  7. request.account = weiboAccount;
  8. weiboAccount账户信息是我们从用户账户信息数据库中获得的,设置给请求对象的account属性,然后才能提交给社交网络服务器进行认证。
  9. 具体开始请求是通过调用SLRequest 的performRequestWithHandler:方法实现的,代码如下:
  10. [request performRequestWithHandler:^(NSData *responseData,
  11. NSHTTPURLResponse *urlResponse, NSError *error) {
  12. <处理请求结果>
  13. }];
requestForServiceType:requestMethod:URL:parameters:,下面是代码是创建SLRequest对象:

SLRequest *request = [SLRequest  requestForServiceType:SLServiceTypeSinaWeibo

requestMethod:SLRequestMethodGET

URL:requestURL

parameters:parameters];

上面的代码还只是创建了SLRequest对象,我们还需要为请求对象设置账户信息,使用下面的语句:

request.account = weiboAccount;

weiboAccount账户信息是我们从用户账户信息数据库中获得的,设置给请求对象的account属性,然后才能提交给社交网络服务器进行认证。

具体开始请求是通过调用SLRequest 的performRequestWithHandler:方法实现的,代码如下:

[request performRequestWithHandler:^(NSData *responseData,

NSHTTPURLResponse *urlResponse, NSError *error) {

<处理请求结果>

}];

4、处理请求结果

请求结束会调用代码块,我们在代码块中处理请求结果。基本工作是解析数据,以及UI的更新等操作。这3个社交网络服务返回的都是JSON格式数据,其中代码块中的responseData参数可以使用NSJSONSerialization解析JSON对象:

Java代码  

  1. id jsonObj = [NSJSONSerialization JSONObjectWithData:responseData
  2. options:NSJSONReadingAllowFragments error:&err];
id jsonObj = [NSJSONSerialization JSONObjectWithData:responseData

options:NSJSONReadingAllowFragments error:&err];

解析的jsonObj对象结构根据社交网络服务的不同而不同,详细参数情况请参考不同服务的开发者网站。

下 面我们通过一个实例介绍一下SLRequest的使用,在表视图画面中,可以下拉刷新视图,获得最新的社交网络服务信息。点击画面导航栏的Action按 钮,会弹出撰写信息的模态视图(右图所示),撰写完成之后点击“Save”按钮发送信息,可以点击“Cancel”按钮取消发送。

时间: 2024-10-12 13:28:26

利用iOS API编写简单微博客户端全过程的相关文章

利用易语言编写简单的目录扫描器

最近在参加小迪的培训,听到这目录扫描收获很大,把过程写下来做笔记. 一.先开发这个我们得首先知道目录扫描器的原理: 1.获取用户输入的url 2.把url和敏感目录关键字组合(比如:url:www.xxx.com 关键字:admin.asp 组合:www.xxx.com/admin.asp) 3.对组合的url进行发包 4.对返回包进行判断,对状态码200,403的进行输出(可自行定义) 二.代码实现部分: 1.界面设计:url输出框--------编辑框1        扫描键--------

iOS 类似简单的第三方微博客户端,可进行登录微博浏览相关信息

Demo地址:https://github.com/ChenNan-FRAM/Fenvo (如果你觉得有用麻烦star一下感激不尽) Fenvo Objective-C, iOS 类似简单的第三方微博客户端,可进行登录微博浏览相关信息.在这个过程我是遇到很多的问题,但是大部分都顺利解决了,相信如果你的项目有类似的地方我的项目里面也能够给你提供一定的帮助,如果需要,可以给我留言或者在Github上联系我. UI简陋,暂未完善.有UI大师指点就最好了. 这个应用我是从开始学后为了实践自己的能力一直在

【iOS开发每日小笔记(三)】利用iOS7 UIKit Dynamics 仿Zaker客户端首页动态效果

这篇文章是我的[iOS开发每日小笔记]系列中的一片,记录的是今天在开发工作中遇到的,可以用很短的文章或很小的demo演示解释出来的小心得小技巧.该分类的文章,内容涉及的知识点可能是很简单的.或是用很短代码片段就能实现的,但在我看来它们可能会给用户体验.代码效率得到一些提升,或是之前自己没有接触过的技术,很开心的学到了,放在这里得瑟一下(^_^).其实,90%的作用是帮助自己回顾.记忆.复习.如果看官觉得太easy,太碎片,则可以有两个选择:1,移步[iOS探究]分类,对那里的文章进行斧正:2,在

利用Hadoop提供的RPC API实现简单的RPC程序

[toc] 利用Hadoop提供的RPC API实现简单的RPC程序 在Hadoop中提供了RPC服务的使用API,通过其API地使用,可以非常简单地构建远程过程调用程序,下面就给出一个简单的实例. 项目结构 为了方便操作,所有的代码都放在本地一个项目中,实际上,完全可以将代码放在不同的服务器上,这是RPC的概念,这里就不做过多的介绍.项目结构如下: rpc/ ├── HelloServiceImpl.java ├── IHelloService.java ├── RPCClientDriver

[python网络编程]利用socket编写简单的服务器

利用socket编写简单的服务器 步骤解析 建立socket对象 这一步跟我们上次使用socket做客户端是一样的,都需要有一个socket连接 s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) 设置socket选项(setsockopt) 选项介绍setsockopt(set socket option),参数设置格式:setsockopt(level,optname,value) 各选项的关系:1.level:level的设定决定了op

利用Java编写简单的WebService实例

使用Axis编写WebService比较简单,就我的理解,WebService的实现代码和编写Java代码其实没有什么区别,主要是将哪些Java类发布为WebService.下面是一个从编写测试例子到发布WebService,以及编写测试代码的过程介绍. 本例子的WebService提供了两个方法,分别是sayHello和sayHelloToPerson,第一个只是返回一个"Hello"字符串,没有参数,第二个函数接受一个字符串作为参数,返回"Hello 参数值",

iOS开发-微博客户端-基本界面搭建(01)

1>创建程序载入界面 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { //1>创建窗口 self.window = [[UIWindowalloc] initWithFrame:[UIScreenmainScreen].bounds]; //2>设置窗口的根控制器 UITabBarController *tabBar

iOS UI基础-9.2 UITableView 简单微博列表

概述 我们要实现的效果: 这个界面布局也是UITableView实现的,其中的内容就是UITableViewCell,只是这个UITableViewCell是用户自定义实现的.虽然系统自带的UITableViewCell已经够强大了,但是这个界面布局并不能满足我们的需求. 在上面的cell布局里,我们可以知道,每个cell的高度都是不固定的.因此,我们通过代码来自定义cell. 代码自定义cell 步骤: 1.新建一个继承自UITableViewCell的类 2.重写initWithStyle:

iOS开发实践:一个完整微博客户端的实现

本文基于数据字典和数据流图两种工具讲述一个完整微博客户端的实现.数据字典和数据流图都可以用来表达线程的执行流程,同时定义了需要的类,是进一步设计类的基础. 数据字典实际上是一张表,表的第一个字段是程序代码中的标识符,其它字段具体描述它在线程中被如何使用,以及它所依赖的其它元素,数据字典中各个标识符基本上也是按照线程的执行流程来排序. 数据流图是一个平面拓扑结构,每个节点或者是外部数据,或者是可被线程执行的代码模块.从外部数据到代码模块的边意味着线程在执行代码模块的时候需要用到外部数据,从代码模块