我尝试使用GSTwitPicEngine类https://github.com/Gurpartap/GSTwitPicEngine在Twitter上分享图像 但它给出错误
因为我们必须设置[twitpicEngine setAccessToken:token];
如果我是对的,我使用_accessToken
类SA_OAuthTwitterEngine
作为标记
_accessToken
在课程SA_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与log
时,应用程序崩溃-[OAToken parameters]: unrecognized selector sent to instance 0x6327e30
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[OAToken parameters]: unrecognized selector sent to instance 0x6327e30'
如果您能找到任何错误,请提供帮助
Amit Battan
答案 0 :(得分:7)
不幸的是,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"];
并将此消息发送给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"]]];
如果您想根据此示例创建自己的项目。执行以下操作:
如果你想知道我为修复库做了什么,我会告诉你或多或少我记得我做过的事情:
GSTwitPicEngine
设置为使用TouchJSON
而不是YAJL
。NSDictionary *foo = [NSDictionary dictionaryWithObject:[token key] forKey:@"oauth_token"];
response = [[CJSONDeserializer deserializer] deserialize:responseString error:&error];
response = [[CJSONDeserializer deserializer] deserialize:[responseString dataUsingEncoding:NSUTF8StringEncoding] error:&error];
答案 1 :(得分:0)
您可以设置访问令牌和放大器从twitter引擎获取twitpic后访问密码,即
SA_OAuthTwitterEngine.m
在“SA_OAuthTwitterEngine.m”中创建“GSTwitPicEngine.m”类的对象。传递访问令牌&访问“GSTwitPicEngine.m”的秘密并在“SA_OAuthTwitterEngine.m”中设置“GSTwitPicEngine.m”的委托方法
还有一个改变......
必须在生成OAuth标头时交叉检查URLEncoding,即
[requestHeader generateRequestHeaders]
这将根据Twitter库中的“OAuthConsumer”类