利用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类描述了账户类型。
认证过程的模板代码如下:
- 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) ⑥
- {
- <认证通过>
- }
- };
- }];
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对象可以使用类级构造方法
- 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) {
- <处理请求结果>
- }];
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对象:
- id jsonObj = [NSJSONSerialization JSONObjectWithData:responseData
- options:NSJSONReadingAllowFragments error:&err];
id jsonObj = [NSJSONSerialization JSONObjectWithData:responseData options:NSJSONReadingAllowFragments error:&err];
解析的jsonObj对象结构根据社交网络服务的不同而不同,详细参数情况请参考不同服务的开发者网站。
下 面我们通过一个实例介绍一下SLRequest的使用,在表视图画面中,可以下拉刷新视图,获得最新的社交网络服务信息。点击画面导航栏的Action按 钮,会弹出撰写信息的模态视图(右图所示),撰写完成之后点击“Save”按钮发送信息,可以点击“Cancel”按钮取消发送。

利用iOS API编写简单微博客户端全过程的更多相关文章
- 劳动节脑洞大开!利用Debug API 获取 加壳客户端的MD5值
系统 : Windows xp 程序 : 某游戏客户端 程序下载地址 :不提供 要求 : 远程注入 & 获取MD5值 使用工具 : vc++6.0 & OD 案例说明: 该游戏客户端对 ...
- 利用Apache POI 实现简单的Excel表格导出
1.利用POI API实现简单的Excel表格导出 首先假设一个学生实体类: package com.sun.poi.domain; import java.io.Serializable; impo ...
- FOFA爬虫大法——API的简单利用
FOFA是一款网络空间搜索引擎,它通过进行网络空间测绘,帮助研究人员或者企业迅速进行网络资产匹配,例如进行漏洞影响范围分析.应用分布统计.应用流行度等. 何为API?如果你在百度百科上搜索,你会得到如 ...
- iOS仿微博客户端一条微博的布局
前言 做一个微博客户端的第三方是自学的第一个实践的项目,自从从事iOS工作之后,就把这个项目给搁置了.趁现在过年回来有些空闲时间,再次修改(总觉得项目就是不停地修改).并且记录一点东西,以后可再回头看 ...
- 【iOS微博客户端开发】1、微博整体项目的构建
回顾自己做过的项目,总结里面的知识点,分享自己参照WXHL的视频开发的一个模拟微博客户端的过程,为了还在IOS上找不到项目参考的朋友,这里会由一系列手把手的教程,如有不足,还希望可以抖抖小手,献上您宝 ...
- iOS开发实践:一个类微博客户端从启动到与用户交互的过程
本文基于数据字典和数据流图两种工具讲述一个完整微博客户端的实现.数据字典和数据流图都可以用来表达线程的执行流程,同时定义了需要的类,是进一步设计类的基础. 数据字典实际上是一张表,表的第一个字段是程序 ...
- Python 利用Python编写简单网络爬虫实例3
利用Python编写简单网络爬虫实例3 by:授客 QQ:1033553122 实验环境 python版本:3.3.5(2.7下报错 实验目的 获取目标网站“http://bbs.51testing. ...
- Python 利用Python编写简单网络爬虫实例2
利用Python编写简单网络爬虫实例2 by:授客 QQ:1033553122 实验环境 python版本:3.3.5(2.7下报错 实验目的 获取目标网站“http://www.51testing. ...
- 利用Java编写简单的WebService实例
使用Axis编写WebService比較简单,就我的理解,WebService的实现代码和编写Java代码事实上没有什么差别,主要是将哪些Java类公布为WebService. 以下是一个从编写測试样 ...
随机推荐
- DOM 1
首先getAttribute setAttribute只能被元素节点对象调用.(属性节点和文本节点调用不了) 我们可以通过一下三种方式得到元素: document.getElementById(); ...
- SourceTree基本操作
下载地址:https://www.sourcetreeapp.com 1.从克隆远程仓库 2.填写git地址 3.克隆成功后会来点如下界面,点击testGitHub 4.scourceTree管理界面 ...
- 在rdlc 中 显示成 yyyy年MM月dd日
在rdlc 中 显示成 yyyy年MM月dd日, 采用: =First(Format(Fields!添加时间.Value,"yyyy年MM月dd日") )
- ORACLE 对用户密码做限制
1. 查看默认设置 2. PASSWORD_LIFE_TIME 60 --口令的生命周期,超过这段时间口令可能会自动过期,是否过期要看是否设定了PASSWORD_GRACE_TIME PASSWORD ...
- Objective-C 【电商APP应用代码-系统分析-详细注释-代码实现】
------------------------------------------- 电商APP应用 ************************************************ ...
- GForms开发平台
1. 开发平台概述 1.1. 产品概述 GForms开发平台让开发人员甚至非技术人员在短短几分钟内创建全功能的展现服务,让开发团队更加适应客户和市场的需求,从而提高客户服务和速度实现收益. GForm ...
- 冒泡,快排算法之javascript初体验
引子:javascript实际使用的排序算法在标准中没有定义,可能是冒泡或快排.不用数组原生的 sort() 方法来实现冒泡和快排. Part 1:冒泡排序(Bubble Sort) 原理:临近的两数 ...
- java 自动装箱和自动拆箱
自动装箱 java执行Integer i = 100:编译器编译成Integer i = Integer.valueOf(100); Integer i = 100; //编译器编译成Integer ...
- <Linux系统hostname命令详解>
hostname命令的用法的小知识我们都知道hostname命令是查看主机名和修改主机名的. [root@apache ~]# hostname //查看本机的主机名apache.example.c ...
- Linux操作杂记
centos7修改默认运行等级 查看当前默认运行等级: systemctl get-dafault 修改默认运行等级为5: systemctl set-default graphical.target ...