この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
REST API を使ってツイートを投稿する
前回は TWTRComposer というクラスを使って、ダイアログからツイートする方法を紹介しました。今回はこれの発展形(?)で、Twitter の REST API を使ってツイートしてみたいと思います。
今回紹介する方法は REST API をコールするので、UI は特に必要ありません。ユーザーに変わってアプリからツイートを投稿することができます。以下のような場合に有効です。
- アプリ内の投稿機能のついでにツイートも投稿させる
- ゲームのスコアをツイートさせる
- 診断結果をツイートさせる
- ツイートをアプリから投稿したことにする *1
statuses/update API をコールする
ツイートを投稿するには POST statuses/update という API を利用します。API の呼び出し方の基本は以前解説していますので、こちらをちょっと書き換えるだけでOKです。
#import "ViewController.h"
#import <TwitterKit/TwitterKit.h>
@interface ViewController ()
@property (weak, nonatomic) TWTRLogInButton *logInButton;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// TWTRLogInButtonの設定
TWTRLogInButton *logInButton = [TWTRLogInButton buttonWithLogInCompletion:^(TWTRSession *session, NSError *error) {
if (error) {
NSLog(@"Error : %@", error);
} else {
NSLog(@"UserName : %@", session.userName);
self.logInButton.hidden = YES;
[self composeTweetREST];
}
}];
logInButton.center = self.view.center;
self.logInButton = logInButton;
[self.view addSubview:logInButton];
}
- (void)composeTweetREST
{
// タイムラインを取得
NSString *endpoint = @"https://api.twitter.com/1.1/statuses/update.json";
NSDictionary *parameters = @{@"status":@"スパイダーフラッシュローリングサンダー"};
NSError *error = nil;
TWTRAPIClient *client = [[Twitter sharedInstance] APIClient];
NSURLRequest *request = [client URLRequestWithMethod:@"POST"
URL:endpoint
parameters:parameters
error:&error];
if (error) {
NSLog(@"Error: %@", error);
return;
}
[client sendTwitterRequest:request
completion:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
if (connectionError) {
NSLog(@"Error: %@", error);
return;
}
NSError *jsonError = nil;
id jsonData = [NSJSONSerialization JSONObjectWithData:data
options:NSJSONReadingMutableContainers
error:&jsonError];
if (jsonError) {
NSLog(@"Error: %@", jsonError);
return;
}
NSLog(@"Result : %@", jsonData);
}];
}
@end
アプリを実行するとログイン中の Twitter ユーザーでツイートが投稿されます。
まとめ
今回の内容は Twitter と連係するアプリを開発する場合、よく使う実装だと思います。Fabric を使うとかなり簡単に実装できて良いですね!
脚注
- 保存されるツイートの source がアプリ名になります。TWTRComposer 及び Social フレームワークを使用した場合はここが Apple で統一されます。この表示は現在公式アプリでは使われていませんが、一部 Twitter クライアントアプリでは利用されています。 ↩