Cocoa touch setAccessToken时twitpic API GSTwitPicEngine错误
我尝试使用GSTwitPicEngine类在twitter上共享图像Cocoa touch setAccessToken时twitpic API GSTwitPicEngine错误,cocoa-touch,api,ios4,twitter-oauth,twitpic,Cocoa Touch,Api,Ios4,Twitter Oauth,Twitpic,我尝试使用GSTwitPicEngine类在twitter上共享图像 但这是一个错误 因为我们必须设置[twitpicEngine setAccessToken:token] 如果我是对的,我将使用类SA_OAuthTwitterEngine的\u accessToken作为令牌 \u accessToken在类中是私有的SA_OAuthTwitterEngine,我将其设置为public,并且 @property (nonatomic, readonly) OAToken *accessTok
但这是一个错误 因为我们必须设置
[twitpicEngine setAccessToken:token]代码>
如果我是对的,我将使用类SA_OAuthTwitterEngine
的\u accessToken
作为令牌
\u accessToken
在类中是私有的SA_OAuthTwitterEngine
,我将其设置为public,并且
@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"]];
但是应用程序在使用日志设置AccessToken时崩溃
-[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不幸的是,GSTwitPicEngine使用的oauth consumer版本与难以置信的Twitter+oauth库(SAOAuthTwitterEngine)不同。我假设您正在使用该库向twitter发布消息
崩溃是因为来自Twitter+Oauth的OAToken没有实现“parameters”方法
今天我花了一上午的时间调整了几个库以避免崩溃。
在这里,您可以下载我创建的一个示例项目,该项目用于将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"]]];
如果要基于此示例创建自己的项目。执行以下操作:
将Twitpic文件夹及其内部的所有库导入项目(拖放)
将这些框架添加到项目中:
- 岩芯图
- libz.1.2.3
- libxml2
- 流动储备
- 系统配置
- CFNetwork
- 保安
内置设置将“$SDKROOT/usr/include/libxml2”添加到“头搜索路径”(将其标记为递归)
内置设置将-lxml2添加到“其他链接器标志”
如果您想知道我为修复库做了什么,我将或多或少地告诉您我记得我做了什么:
导入Twitter+Oauth、GSTwitPicEngine、OARequestHeader、TouchJSON和ASIHTTPRequest库
将GSTwitPicEngine
设置为使用TouchJSON
而不是YAJL
添加了oauth consumer github项目中的类别NSString+URLEncoding,因为缺少它
使用以下行修改了OARequestHeader中出现的所有NSDictionary*foo=[toke参数]:
NSDictionary*foo=[NSDictionary Dictionary WithObject:[令牌键]forKey:@“oauth_令牌”]代码>
在SAOAuthTwitterEngine中创建了一个getAccessToken方法,以返回private\u accessToken变量
在requestFinished中:在GSTwitPicEngine内部
- 更改行:
response=[[CJSONDeserializer-deserializer]反序列化:responseString错误:&error]代码>
- 用这句话:
response=[[CJSONDeserializer-deserializer]反序列化:[responseString数据使用编码:NSUTF8StringEncoding]错误:&错误]代码>
- 由于GSTwitPicEngine错误地假定反序列化:错误:方法接受NSString而不是NSData
不幸的是,GSTwitPicEngine使用的oauth consumer版本与难以置信的Twitter+oauth库(SAOAuthTwitterEngine)不同。我假设您正在使用该库向twitter发布消息
崩溃是因为来自Twitter+Oauth的OAToken没有实现“parameters”方法
今天我花了一上午的时间调整了几个库以避免崩溃。
在这里,您可以下载我创建的一个示例项目,该项目用于将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"]]];
如果要基于此示例创建自己的项目。执行以下操作:
将Twitpic文件夹及其内部的所有库导入项目(拖放)
将这些框架添加到项目中:
- 岩芯图
- libz.1.2.3
- libxml2
- 流动储备
- 系统配置
- CFNetwork
- 保安
内置设置将“$SDKROOT/usr/include/libxml2”添加到“头搜索路径”(将其标记为递归)
内置设置将-lxml2添加到“其他链接器标志”
如果您想知道我为修复库做了什么,我将或多或少地告诉您我记得我做了什么:
导入Twitter+Oauth、GSTwitPicEngine、OARequestHeader、TouchJSON和ASIHTTPRequest库
将GSTwitPicEngine
设置为使用TouchJSON
而不是YAJL
添加了oauth consumer github项目中的类别NSString+URLEncoding,因为缺少它
使用以下行修改了OARequestHeader中出现的所有NSDictionary*foo=[toke参数]:
NSDictionary*foo=[NSDictionary Dictionary WithObject:[令牌键]forKey:@“oauth_令牌”]代码>
在SAOAuthTwitterEngine中创建了一个getAccessToken方法,以返回private\u accessToken变量
在requestFinished中:在GSTwitPicEngine内部
- 更改行:
response=[[CJSONDeserializer-deserializer]反序列化:responseString错误:&error]代码>
- 用这句话: