twitpic API GSTwitPicEngine错误而setAccessToken

问题描述:

我想,如果我的权利,我使用类的_accessToken使用GSTwitPicEngine类https://github.com/Gurpartap/GSTwitPicEngine用于在Twitter上
共享图像,但它给错误twitpic API GSTwitPicEngine错误而setAccessToken

我们必须设置[twitpicEngine setAccessToken:token];
SA_OAuthTwitterEngine如令牌

_accessTokenSA_OAuthTwitterEngine类私人,我将其设置为公开,也

@property (nonatomic, readonly) OAToken *accessToken; 
@synthesize accessToken = _accessToken; 

,然后在行动

twitPicEngine = [GSTwitPicEngine twitpicEngineWithDelegate:self]; 
[twitPicEngine setAccessToken:twitterObj.accessToken]; 
[twitPicEngine uploadPicture:[shareDict objectForKey:@"image"] withMessage:[shareDict objectForKey:@"image_msg"]]; 

但应用越来越崩溃,setAccessToken与日志

-[OAToken parameters]: unrecognized selector sent to instance 0x6327e30 
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[OAToken parameters]: unrecognized selector sent to instance 0x6327e30' 

请帮助,如果你能找到任何一点毛病

阿米特Battan

不幸的是,GSTwitPicEngine不是我们与美妙的Twitter + Oauth库(SAOAuthTwitterEngine)相比,Oauth-consumer的版本更高。我假设你正在使用该库将消息发布到Twitter。

这次崩溃是因为来自Twitter + Oauth的OAToken没有实现“参数”方法。

今天我花了整整一个早上调整了几个库,以避免崩溃。 在这里,您可以下载一个我创建的示例项目,用于向twitter发送twitpic照片并发送消息。

TestTwitpic

该项目从GitHub所有库的所有最新版本。

说明让我TestTwitpic项目工作

在TestTwitpic-Prefix.pch设置变量:

#define kTwitterOAuthConsumerKey @"" 
#define kTwitterOAuthConsumerSecret @"" 
#define kTwitPicAPIKey @"" 

在RootViewController的,你可以将这些行更改您的需求。如果你想在此基础上样品创建自己的项目

//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"]]]; 

:要更改照片:

//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。执行以下操作:

  1. 导入您的项目(拖放)Twitpic文件夹与所有内部库。
  2. 这些框架添加到您的项目:
    • CoreGraphics在
    • libz.1.2.3
    • 的libxml2
    • MobileCoreServices
    • SystemConfiguration
    • CFNetwork的
    • 安全
  3. 在生成设置中添加 “$ SDKROOT/usr/include目录/ libxml2的” 到 “头文件搜索路径”(标记为递归)
  4. 在Build设置添加-lxml2到 “其他连接标志”

如果你想知道我做了什么固定的图书馆,我会告诉你更多或更少我记得我做过什么:

  1. 导入Twitter的+端Oauth,GSTwitPicEngine,OARequestHeader,TouchJSON和ASIHTTPRequest库。
  2. 设置GSTwitPicEngine使用TouchJSON而不是YAJL
  3. 从oauth-consumer github项目中添加NSString + URLEncoding类别为OARequestHeader缺少它。
  4. 改性的NSDictionary的所有匹配*富= [托克参数]内OARequestHeader与线:
    • NSDictionary *foo = [NSDictionary dictionaryWithObject:[token key] forKey:@"oauth_token"];
  5. 创建于SAOAuthTwitterEngine方法getAccessToken返回私人_accessToken变量。
  6. 在requestFinished:内部GSTwitPicEngine
    • 变化的行:
      • response = [[CJSONDeserializer deserializer] deserialize:responseString error:&error];
    • 与线:
      • response = [[CJSONDeserializer deserializer] deserialize:[responseString dataUsingEncoding:NSUTF8StringEncoding] error:&error];
    • 由于GSTwitPicEngine错误地假定为反序列化:error:方法接受NSString而不是NSData。
+0

感谢Monitus ..我会检查你的代码 – 2011-05-02 04:21:59

+0

它没有帮助呢? @AmitBattan – Monitus 2011-05-17 07:21:08

+0

请求连续失败... TestTwitpic [2180:207] TwitPic无法上传:{ errorDescription =“请求失败。”; request =“”; 任何帮助 – Tobias 2011-05-30 15:25:41

您可以从Twitter发动机即得到

SA_OAuthTwitterEngine后设置访问令牌&访问揭秘twitpic。米

  • (无效)setAccessToken:(OAServiceTicket *)票withData:(NSData的*)数据

创建 “SA_OAuthTwitterEngine.m” “GSTwitPicEngine.m” 级令牌&通访问&的对象访问秘密“GSTwitPicEngine.m”和“GSTwitPicEngine.m”在“SA_OAuthTwitterEngine.m”的设定委托方法

还有一变......

必须交叉检查URLEnco丁而genrating OAuth的头即

[requestHeader generateRequestHeaders]

这将根据Twitter的图书馆 “OAuthConsumer” 类