要编写社交网络客户端程序,可以大体上分为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类描述了账户类型。

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

  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对象可以使用类级构造方法

  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对象:

  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”按钮取消发送。

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

  1. 劳动节脑洞大开!利用Debug API 获取 加壳客户端的MD5值

    系统 : Windows xp 程序 : 某游戏客户端 程序下载地址 :不提供 要求 : 远程注入 & 获取MD5值 使用工具 : vc++6.0 & OD 案例说明: 该游戏客户端对 ...

  2. 利用Apache POI 实现简单的Excel表格导出

    1.利用POI API实现简单的Excel表格导出 首先假设一个学生实体类: package com.sun.poi.domain; import java.io.Serializable; impo ...

  3. FOFA爬虫大法——API的简单利用

    FOFA是一款网络空间搜索引擎,它通过进行网络空间测绘,帮助研究人员或者企业迅速进行网络资产匹配,例如进行漏洞影响范围分析.应用分布统计.应用流行度等. 何为API?如果你在百度百科上搜索,你会得到如 ...

  4. iOS仿微博客户端一条微博的布局

    前言 做一个微博客户端的第三方是自学的第一个实践的项目,自从从事iOS工作之后,就把这个项目给搁置了.趁现在过年回来有些空闲时间,再次修改(总觉得项目就是不停地修改).并且记录一点东西,以后可再回头看 ...

  5. 【iOS微博客户端开发】1、微博整体项目的构建

    回顾自己做过的项目,总结里面的知识点,分享自己参照WXHL的视频开发的一个模拟微博客户端的过程,为了还在IOS上找不到项目参考的朋友,这里会由一系列手把手的教程,如有不足,还希望可以抖抖小手,献上您宝 ...

  6. iOS开发实践:一个类微博客户端从启动到与用户交互的过程

    本文基于数据字典和数据流图两种工具讲述一个完整微博客户端的实现.数据字典和数据流图都可以用来表达线程的执行流程,同时定义了需要的类,是进一步设计类的基础. 数据字典实际上是一张表,表的第一个字段是程序 ...

  7. Python 利用Python编写简单网络爬虫实例3

    利用Python编写简单网络爬虫实例3 by:授客 QQ:1033553122 实验环境 python版本:3.3.5(2.7下报错 实验目的 获取目标网站“http://bbs.51testing. ...

  8. Python 利用Python编写简单网络爬虫实例2

    利用Python编写简单网络爬虫实例2 by:授客 QQ:1033553122 实验环境 python版本:3.3.5(2.7下报错 实验目的 获取目标网站“http://www.51testing. ...

  9. 利用Java编写简单的WebService实例

    使用Axis编写WebService比較简单,就我的理解,WebService的实现代码和编写Java代码事实上没有什么差别,主要是将哪些Java类公布为WebService. 以下是一个从编写測试样 ...

随机推荐

  1. UIActivityIndicatorView的使用方法(旋转动画)

    - (void)viewDidLoad { [super viewDidLoad]; //创建UIActivityIndicatorView并设置样式:WhiteLarge为37 * 37,Gray和 ...

  2. 解决cell循环利用造成的重复勾选

    @interface ProfessionViewController (){ NSMutableArray *_professionArray;//cell模型数组 NSMutableArray * ...

  3. Hartree-Fock理论(更新中)

    预备知识: 基组 分子轨道基本概念与Hartree Product 平均场与Fock算符 在忽略分子中电子的相互作用时,我们有了一个粗糙的模型,虽然非常容易求解,但是描述的精确程度非常差. 考虑电子的 ...

  4. External Table

    CREATE TABLE AS SELECT,使用Oracle9i的External Table  Oracle 9i 的一项新特性就是 External Table,它就象通常的数据库表一样,拥有字 ...

  5. spark HA 安装配置和使用(spark1.2-cdh5.3)

    安装环境如下: 操作系统:CentOs 6.6 Hadoop 版本:CDH-5.3.0 Spark 版本:1.2 集群5个节点 node01~05 node01~03 为worker. node04. ...

  6. SQL批量修改表名

    SELECT NAME FROM SYS. ALL_OBJECTS WHERE TYPE= 'U' ORDER BY MODIFY_DATE DESC --查询所有表名 SELECT NAME FRO ...

  7. 我的博客模板(线框图wireframe)

    不久前看到一篇介绍定制网页浏览的方法,当时就想着,我把我的博客页也修改下,在手机浏览的时候,也能漂亮的显示出来.以后写的文章的话,也可以分享的微信朋友圈里面和朋友分享. 具体步骤参考:http://w ...

  8. 原生js学习笔记2

    知识点: 1:关于this指向问题,如果有函数a(),直接a()那么this指向window,new a()指向函数本身. 2:关于null和undefined.两者如果用“==”则认为两者是相等的, ...

  9. js判断输入是否为空,获得输入的类型

    使用typeof算法 typeof的运算数未定义,返回的就是 "undefined". 下面定义x为运算数: 有一下5种情况: 运算数为数字 typeof(x) 返回的就是 &qu ...

  10. Facade模式和Mediator模式

    相同的目的:把某种策略施加到另一组对象上. Facade从上面施加策略. 其使用是明显且受限的.当策略涉及范围广泛并且可见时. 约定的关注点.都同意使用Facade而不是隐藏于其下的对象. Media ...