Twitter Search API に投げかけて検索結果を取得する [Domain=NSURLErrorDomain Code=-1000]
投げかける部分だけでけっこうつまづいていたのでメモ。
ライブラリを使用して
SecretTokenからAccessTokenを取得するところまではなんとか出来た(?)
だけど、
REST Search APIに投げかけてデータを取得するところで失敗している。
NSURL *url = [NSURL URLWithString:@"https://api.twitter.com/1.1/search/tweets.json?q=あまちゃん"]; OAMutableURLRequest *request = [[OAMutableURLRequest alloc] initWithURL:url consumer:consumer token:_accessToken realm:nil signatureProvider:nil]; [request setHTTPMethod:@"POST"]; OADataFetcher *fetcher = [[OADataFetcher alloc] init]; [fetcher fetchDataWithRequest:request delegate:self didFinishSelector:@selector(searchToken:didFinishWithData:) didFailSelector:@selector(searchToken:didFailWithError:)];
とすると
Domain=NSURLErrorDomain Code=-1000 とエラーが返ってくる。
hIDDEN bLOG » iPhoneでOAuth認証するぜの巻
http://hidden.vis.ne.jp/blog/?p=570
ここのページを参考に
アクセストークン(のkeyとsecret)をアプリで保存しておくことで、twitterユーザーのID・パスワードをアプリが関与しなくてもtwitterへ認証できるようになるという仕組みだ。
ってことはアクセストークンを保存して
値きちんとはいってないか、渡し方が悪いのか・・・確認してどうも大丈夫みたい。
それよりもURLの指定が悪かったみたい。
GET search/tweets | Twitter Developers
https://dev.twitter.com/docs/api/1.1/get/search/tweets
A UTF-8, URL-encoded search query of 1,000 characters maximum, including operators. Queries may additionally be limited by complexity.
とあるようにUTF-8でエンコードして渡すと書いてある・・・。
そこで
NSString *urlString = @"https://api.twitter.com/1.1/search/tweets.json?q=あまちゃん&lang=ja"; // UTF-8でエンコード NSString *encodedString = [urlString stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding]; NSURL *url = [NSURL URLWithString:encodedString];
と変更したら無事結果返ってきました。良かった。