不幸的是,GSTwitPicEngine 使用的 oauth-consumer 版本与精彩的 Twitter+Oauth 库 (SAOAuthTwitterEngine) 不同。我假设您正在使用该库向 twitter 发布消息。
崩溃是因为来自 Twitter+Oauth 的 OAToken 没有实现“参数”方法。
今天我整个上午都在调整几个库以避免崩溃。在这里,您可以下载我创建的示例项目,用于将 twitpic 照片与消息一起发布到 Twitter。
测试推特图片
该项目具有来自 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"];
而这个更改发送到推特的消息:
//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网络
- 安全
- 在 Build Settings 添加“$SDKROOT/usr/include/libxml2”到“Header Search Paths”(将其标记为递归)
- 在 Build Settings 添加 -lxml2 到“Other linker flags”
如果你想知道我为修复库做了什么,我会或多或少地告诉你我记得我做了什么:
- 导入 Twitter+Oauth、GSTwitPicEngine、OARequestHeader、TouchJSON 和 ASIHTTPRequest 库。
- 设置
GSTwitPicEngine
为使用TouchJSON
而不是YAJL
.
- 从 oauth-consumer github 项目中添加了 NSString+URLEncoding 类别,因为OARequestHeader缺少它。
- 修改了OARequestHeader中所有出现的 NSDictionary* foo = [toke parameters]的行:
NSDictionary *foo = [NSDictionary dictionaryWithObject:[token key] forKey:@"oauth_token"];
- 在 SAOAuthTwitterEngine 中创建方法 getAccessToken 以返回私有 _accessToken 变量。
- 在 requestFinished 中:在 GSTwitPicEngine 中
- 换行:
response = [[CJSONDeserializer deserializer] deserialize:responseString error:&error];
- 与行:
response = [[CJSONDeserializer deserializer] deserialize:[responseString dataUsingEncoding:NSUTF8StringEncoding] error:&error];
- 由于 GSTwitPicEngine 错误地假定反序列化:错误:方法接受 NSString 而不是 NSData。