残念ながら、GSTwitPicEngine は素晴らしい Twitter+Oauth ライブラリ (SAOAuthTwitterEngine) と同じバージョンの oauth-consumer を使用していません。twitter にメッセージを投稿するためにそのライブラリを使用していると思います。
クラッシュは、Twitter+Oauth の OAToken が「パラメーター」メソッドを実装していないために発生します。
今日は午前中ずっと、いくつかのライブラリを微調整してクラッシュを回避しました。ここでは、私が作成した twitpic の写真をメッセージ付きで twitter に投稿するためのサンプル プロジェクトをダウンロードできます。
TestTwitpic
このプロジェクトには、github のすべてのライブラリの最新バージョンがすべて含まれています。
TestTwitpic プロジェクトを機能させるための手順:
TestTwitpic-Prefix.pch で、次の変数を設定します。
#define kTwitterOAuthConsumerKey @""
#define kTwitterOAuthConsumerSecret @""
#define kTwitPicAPIKey @""
RootViewController では、これらの行を必要に応じて変更できます。写真を変更するには:
//change [UIImage imageNamed:@"image.jpg"] for whatever UIImage you want to upload
//change @"my photo" for whatever title you want for your photo in twitpic website
[twitpicEngine uploadPicture:[UIImage imageNamed:@"image.jpg"] withMessage:@"my photo"];
そして、これはTwitterに送信されたメッセージを変更するものです:
//I post to twitter the title of the photo and the twitpic url but you can post whatever you want
[engine sendUpdate:[NSString stringWithFormat:@"%@ %@", [[[response objectForKey:@"request"] userInfo] objectForKey:@"message"], [[response objectForKey:@"parsedResponse"] objectForKey:@"url"]]];
このサンプルに基づいて独自のプロジェクトを作成する場合。以下をせよ:
- 内部にあるすべてのライブラリを含む Twitpic フォルダーをプロジェクトにインポート (ドラッグ アンド ドロップ) します。
- これらのフレームワークをプロジェクトに追加します。
- コアグラフィックス
- libz.1.2.3
- libxml2
- モバイルコアサービス
- システム構成
- CFネットワーク
- 安全
- ビルド設定で、「$SDKROOT/usr/include/libxml2」を「ヘッダー検索パス」に追加します (再帰としてマークします)。
- ビルド設定で、「その他のリンカー フラグ」に -lxml2 を追加します。
ライブラリを修正するために私が何をしたかを知りたい場合は、多かれ少なかれ私が行ったことを覚えていることをお話しします。
- Twitter+Oauth、GSTwitPicEngine、OARequestHeader、TouchJSON、および ASIHTTPRequest ライブラリをインポートします。
- の代わり
GSTwitPicEngine
に使用するように設定します。TouchJSON
YAJL
- OARequestHeaderが欠落していたため、oauth-consumer github プロジェクトからカテゴリ NSString+URLEncoding を追加しました。
- OARequestHeader内の NSDictionary* foo = [ toke parameters] のすべての出現箇所を次の行で
変更しました。
NSDictionary *foo = [NSDictionary dictionaryWithObject:[token key] forKey:@"oauth_token"];
- private _accessToken 変数を返すメソッド getAccessToken を SAOAuthTwitterEngine に作成しました。
- In requestFinished: GSTwitPicEngine 内
- 行を変更します。
response = [[CJSONDeserializer deserializer] deserialize:responseString error:&error];
- 次の行で:
response = [[CJSONDeserializer deserializer] deserialize:[responseString dataUsingEncoding:NSUTF8StringEncoding] error:&error];
- GSTwitPicEngine は、deserialize:error: メソッドが NSData の代わりに NSString を受け入れると誤って想定したためです。