darjjeelling apps website



TwitterAPI v1.1対応メモ(users/lookup 認証エラー)

現在、フォローチェック for TwitterでのTwitterAPI v1.1対応を行っています。
そこでちょっとトラブった内容をメモしたいと思います。

ユーザの詳細情報をとってくる”GET users/lookup”というAPIがありますが、
iOS5標準搭載のTWRequestクラス経由で呼び出そうとしました。

こんな感じ。

GET https://api.twitter.com/1.1/users/lookup.json?user_id=xxx,yyy,zzz
(xxx,yyy,zzzはユーザーID)

ところがこんな認証エラーが返ってきました。

code = 32;
message = “Could not authenticate you”;

もちろん、認証の設定は行っていますし、他のAPIコールではちゃんと返信が来ていて、なんだろうなあ?と。

で、言われるまで気づきませんでしたが、送信するときにカンマが使われているのが原因でした。
ユーザID “xxx,yyy,zzz”のところで使っているやつですね。
このカンマがURLエンコードされていないと、OATHv1.1認証でひっかかるとのこと。

そこで、こんな感じにURLエンコード変換を追加してから送るようにしてやりました。

1. NSString * url_str=”https://api.twitter.com/1.1/users/lookup.json?user_id=xxx,yyy,zzz”;
2. NSString *url_str_enc = (NSString *)CFURLCreateStringByAddingPercentEscapes(
kCFAllocatorDefault,
(CFStringRef)url_str,
NULL,
CFSTR(“,”),
kCFStringEncodingUTF8
);//←★ここでカンマを%2Cへエンコード
3. NSURL *url = [NSURL URLWithString:url_str_enc];
4. TWRequest *request = [[TWRequest alloc] initWithURL:url parameters:nil
requestMethod:TWRequestMethodGET];

これで無事取得できました。
ちなみに、カンマ以外の”?”とかもエンコード必要かなぁと思ってやってみましたが、逆にエラーになりました(笑)
必要なのはカンマだけ、みたいです。なんか不思議だ。

もし同様に悩んだ方がいましたら、ご参考にどうぞ。


iPhoneアプリ「フォローチェック for Twitter」もよろしくどうぞm(_ _)m
フォローチェック for Twitter
フォローチェック for Twitter

広告

%d人のブロガーが「いいね」をつけました。