TwitPic API V2で写真を投稿できなくて困ってます
今回はテクニカルなご相談ですので、技術者の方オンリーなTALKになります。
既にご存知に方も多い方と思いますが、Twitterは今月末に、ベーシック認証からOAuthまたはXAuthというセキュアな認証方式に変更になります。この措置に伴って、各クライアントアプリも対応版をリリースする必要があります。幸い、”EveryTwitteIt!”については、既にXAuthに対応済ですので、ツイートについては問題はないんですけど、今回の相談事のポイントはTwitPicの新しい認証への対応になります。
TwitPicは、Twitterに寄り添って写真投稿するOAuth Echoというユニークな認証方式を採用していることもあって、殆ど有効な情報を得ることができない状況にあります。ま、本家では全く不親切極まりない内容でしか技術情報を公開していませんので、仕方がないかもしれませんけど。一方、ネットでは、ごく僅か成功されている方がいらっしゃる様子ですが、サンプルコードを公開しているサイトの大半が、こんなコードを書いたんだけどエラーが出て困ってる、っていう内容ばかり。
そんな背景もあって、POOHの場合も、かなりハマってるいます。具体的なコードの話をしますと、概ねこんな具合いになります。
POOHは、”OAuthConsumer Framework”というライブラリを使っていますので、こんなコードを書いて準備します。
OAConsumer *consumer = [[[OAConsumer alloc] initWithKey…
OAMutableURLRequest *request = [[[OAMutableURLRequest alloc] initWithURL…
続いて、パラメータの設定です。
NSMutableArray *xAuthParameters = [NSMutableArray arrayWithCapacity: 3];
[xAuthParameters addObject: [OARequestParameter requestParameterWithName: @”X-Auth-Service-Provider” value: kXAuthServiceProvider]];
[xAuthParameters addObject: [OARequestParameter requestParameterWithName: @”media” value: photo]];
[xAuthParameters addObject: [OARequestParameter requestParameterWithName: @”key” value: kTwitPicAPIKey]];
[xAuthParameters addObject: [OARequestParameter requestParameterWithName: @”message” value: status]];
後は、
[request setHTTPMethod: @”POST”];
[request setParameters: xAuthParameters];
OADataFetcher *fetcher = [[[OADataFetcher alloc] init] autorelease];
[fetcher fetchDataWithRequest: request …
といった流れで、TwitPicにリクエストしています。
上記のコードを実行すると、TwitPicというか実際にはTwitter側の認証はパスするんですけど、こんなエラーが返ってきてしまいます。
2010-06-05 07:01:34.388 EveryTwitteIt![17588:a0f] {“errors”:[{“code”:400,”message”:”Bad Request. Media not included in POST payload.”}]}
つまり、画像データを指定している”media”パラメータが間違っているみたいで、メディアが含まれていないよ!っていうエラーになります。
実は、”OAuthConsumer Framework”でパラメータを指定する場合、”NSString”でデータを埋めなくてならないので、もともとの画像データが”NSData”なんですけど、それをこんなやり方で”NSString”に変換しています。
NSString *photo = [[[NSString alloc] initWithData: photoData encoding: NSUTF8StringEncoding] autorelease];
ということで、画像データをTwitPicに渡せなくて困っています。
こんな感じの解決策があるよ、とか、このコードを使ってみたら、っていうサポートを頂ける方、是非、POOHに愛の手を差し伸べて下さい。ここに連絡いただけると、とっても嬉しいです。
よろしくお願いします!!!!