Objectwitter-CTwitter API 封裝
什么是 Objectwitter-C
Objectwitter-C 是一款穩(wěn)定,成熟,全面的 Twitter REST/Streaming API 的 Objective-C 封裝,其封裝了 Twitter 的全部公開 API。由 @開源中國真理部部長 基于 STTwitter 開發(fā),在 STTwitter 對 Twitter REST API 的全面封裝的基礎(chǔ)上,增添了很多工具類使得 API 更加抽象,易用,并且完全重新設(shè)計(jì)了 Twitter Streaming API 的封裝,利用類似于 NSURLSession/NSURLConnection 的委托模式(delegate)使得用戶更容易與 Twitter 流(streaming)API 交互。
Objectwitter-C 不依賴于 AppKit 和 UIKit 即可工作,你可以將該框架用在命令行應(yīng)用中。你可以把 Objectwitter-C 考慮為 FOSS 版的 Twitter Fabric TwitterKit,但是去掉了 UI 部分并且更加靈活。
安裝
將項(xiàng)目目錄拖動(dòng)到你自己的工程中,將你的工程與下列系統(tǒng)框架連接:
-
Accounts.framework
-
Social.framework
-
Twitter.framework (iOS only)
-
Security.framework (OS X only)
代碼片段
初始化 Twitter API 對象:
STTwitterAPI* twitter = [ STTwitterAPI twitterAPIWithOAuthConsumerKey: @"" consumerSecret: @"" username: @"" password: @"" ];
驗(yàn)證憑據(jù):
[ twitter verifyCredentialsWithUserSuccessBlock:
^( NSString* username, NSString* userID )
{
// ...
} errorBlock:
^( NSError* error )
{
// ...
} ];
抓取時(shí)間軸(Timeline)中的推文(tweets):
[ twitter getHomeTimelineSinceID: nil
count: 100
successBlock:
^( NSArray* statuses )
{
// ...
} errorBlock:
^( NSError* error )
{
// ...
} ];
App Only 驗(yàn)證:
STTwitterAPI* twitter = [ STTwitterAPI twitterAPIAppOnlyWithConsumerKey: @""
consumerSecret: @"" ];
[ twitter verifyCredentialsWithUserSuccessBlock:
^( NSString* username, NSString* userID )
{
[ twitter getUserTimelineWithScreenName: @"barackobama"
successBlock:
^( NSArray* statuses )
{
// ...
} errorBlock:
^( NSError* error )
{
// ...
} ];
} errorBlock:
^( NSError* error )
{
// ...
} ];
使用游標(biāo)(cursor)枚舉返回結(jié)果:
[ _twitter fetchAndFollowCursorsForResource: @"followers/ids.json"
HTTPMethod: @"GET"
baseURLString: @"https://api.twitter.com/1.1"
parameters: @{@"screen_name":@"0xcharlie"}
uploadProgressBlock: nil
downloadProgressBlock: nil
successBlock:
^( id request, NSDictionary* requestHeaders, NSDictionary* responseHeaders, id response, BOOL morePagesToCome, BOOL* stop )
{
NSLog( @"-- success, more to come: %d, %@", morePagesToCome, response );
} pauseBlock:
^( NSDate* nextRequestDate )
{
NSLog( @"-- rate limit exhausted, nextRequestDate: %@", nextRequestDate );
} errorBlock:
^( id request, NSDictionary* requestHeaders, NSDictionary* responseHeaders, NSError* error )
{
NSLog( @"-- %@", error );
} ];
不同類型的 OAuth 連接:你可以以三種方法初始化 STTwitterAPI 對象:
-
使用 OS X Preferences 或者 iOS Settings 中的 Twitter 賬號(hào)
-
使用你自己指定的 consumer key 和 consumer secret(四種風(fēng)格):
-
獲取一個(gè) URL,抓取 PIN 碼輸入到你的 app 中從而獲取 OAuth access token
-
設(shè)置用戶名(username)和密碼(password),然后使用 XAuth 獲取 OAuth access token
-
直接設(shè)置 OAuth token 和 OAuth token secret
-
打開 Safari 或者使用 UIWebView 實(shí)例,執(zhí)行 Twitter 驗(yàn)證操作然后通過一個(gè)定制的 UEL scheme 在你的 app 中直接接收 OAuth access token
-
使用 Application Only 驗(yàn)證,獲取并使用 “bearer token“
有五個(gè) API 對應(yīng)五種情況:
+ ( STTwitterAPI* ) twitterAPIOSWithFirstAccount; + ( STTwitterAPI* ) twitterAPIWithOAuthConsumerKey: ( NSString* )consumerKey consumerSecret: ( NSString* )consumerSecret; + ( STTwitterAPI* ) twitterAPIWithOAuthConsumerKey: ( NSString* )consumerKey consumerSecret: ( NSString* )consumerSecret username: ( NSString* )username password: ( NSString* )password; + ( STTwitterAPI* ) twitterAPIWithOAuthConsumerKey: ( NSString* )consumerKey consumerSecret: ( NSString* )consumerSecret oauthToken: ( NSString* )oauthToken oauthTokenSecret: ( NSString* )oauthTokenSecret; + ( STTwitterAPI* ) twitterAPIAppOnlyWithConsumerKey: ( NSString* )consumerKey consumerSecret: ( NSString* )consumerSecret;
上面的代碼片段只是用于演示,Objectwitter-C API 是對 Twitter API 的全面封裝,所以你可以查閱頭文件和 Twitter API 文檔來了解任何你想要的東西。
OAuth Consumer Tokens
在 Twitter API 1.1 中,每個(gè)客戶端應(yīng)用必須使用consumer key和consumer secret驗(yàn)證自身。你可以在這個(gè) Twitter 站點(diǎn)中為你的 app 申請 consumer tokens:https://dev.twitter.com/apps.
Demo/Test Project
在 Objectwitter-C 項(xiàng)目中,在 demo_osx 目錄下包含了一個(gè) OS X 上的 demo,這個(gè) demo 演示了一部分 API 的用法,并且還可以允許你選擇如何獲取 OAuth Tokens(如下圖):
一旦你成功獲取了 OAuth Tokens,你就可以馬上使用這個(gè)簡易的客戶端獲取你的時(shí)間軸并且發(fā)一些推文了。同時(shí),項(xiàng)目中還有一個(gè) iOS 的 demo:
更多細(xì)節(jié)
-
瀏覽頭文件和 Twitter API 文檔
聯(lián)系作者/Troubleshooting
如果遇到任何問題,可以以下面的方式聯(lián)系我:
-
Email me: dG9yaW5Aa3dvay5pbQ== (Base64ed)
