首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >twitpic错误而setAccessToken

twitpic错误而setAccessToken
EN

Stack Overflow用户
提问于 2011-04-08 06:58:52
回答 2查看 2.2K关注 0票数 1

我尝试使用GSTwitPicEngine类https://github.com/Gurpartap/GSTwitPicEngine在twitter上共享图像。

但它的给予错误

因为我们必须设置[twitpicEngine setAccessToken:token];

如果我是对的,我将使用_accessToken of class SA_OAuthTwitterEngine作为标记。

_accessTokenSA_OAuthTwitterEngine类中是私有的,我把它设置为公共的,并且

代码语言:javascript
复制
@property (nonatomic, readonly) OAToken *accessToken;
@synthesize accessToken = _accessToken;

然后在行动中

代码语言:javascript
复制
twitPicEngine = [GSTwitPicEngine twitpicEngineWithDelegate:self];
[twitPicEngine setAccessToken:twitterObj.accessToken];
[twitPicEngine uploadPicture:[shareDict objectForKey:@"image"] withMessage:[shareDict objectForKey:@"image_msg"]];

但是应用程序在使用日志时setAccessToken会崩溃

代码语言:javascript
复制
-[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

EN

回答 2

Stack Overflow用户

发布于 2011-04-29 13:45:56

不幸的是,GSTwitPicEngine并没有使用与Twitter+Oauth库(SAOAuthTwitterEngine)相同的oauth消费者版本。我想你是在用这个库把消息发到twitter上。

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

今天,我花了整整一个上午的时间对几个库进行了调整,以避免崩溃。在这里,您可以下载我创建的一个示例项目,它是为了在twitter上发布带有消息的twitpic照片而创建的。

TestTwitpic

该项目拥有来自github的所有库的所有最新版本。

关于如何使我的项目工作的说明

在TestTwitpic-前缀中,for为以下变量设置变量:

代码语言:javascript
复制
#define kTwitterOAuthConsumerKey @""
#define kTwitterOAuthConsumerSecret @""
#define kTwitPicAPIKey @""

在RootViewController中,您可以根据需要更改这些行。若要更改照片:

代码语言:javascript
复制
//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的信息:

代码语言:javascript
复制
//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"]]];

如果您想要基于此示例创建您自己的项目,请使用。执行以下操作:

  1. 将包含所有库的Twitpic文件夹导入到项目中(拖放)。
  2. 将这些框架添加到项目中:
    • CoreGraphics
    • libz.1.2.3
    • libxml2
    • MobileCoreServices
    • SystemConfiguration
    • CFNetwork
    • 安全性

  1. 在构建设置中,将“$SDKROOT/usr/include/libxml2 2”添加到“头搜索路径”(将其标记为递归)
  2. 在生成设置中,将-lxml2添加到“其他链接器标志”

如果您想知道我为修复库做了什么,我会或多或少地告诉您我记得我做了什么:

  1. 导入Twitter+Oauth、GSTwitPicEngine、OARequestHeader、TouchJSON和ASIHTTPRequest库。
  2. GSTwitPicEngine设置为使用TouchJSON而不是YAJL
  3. 添加了来自oauth项目的类别NSString+URLEncoding,因为NSString+URLEncoding错过了它。
  4. 用行:OARequestHeader修改了NSDicary* foo = toke参数的所有出现
  5. NSDictionary *foo = [NSDictionary dictionaryWithObject:[token key] forKey:@"oauth_token"];

  1. 在getAccessToken中创建了一个方法SAOAuthTwitterEngine来返回私有_accessToken变量。
  2. In requestFinished: inside GSTwitPicEngine
    • 更改行:
      • response = [[CJSONDeserializer deserializer] deserialize:responseString error:&error];

代码语言:javascript
复制
- with the line:  
    - `response = [[CJSONDeserializer deserializer] deserialize:[responseString dataUsingEncoding:NSUTF8StringEncoding] error:&error];`

代码语言:javascript
复制
- as GSTwitPicEngine wrongly assumed deserialize:error: method accepts an NSString instead of an NSData.

票数 7
EN

Stack Overflow用户

发布于 2012-10-12 04:50:00

您可以在从twitter引擎获得之后,为twitpic设置访问令牌和访问秘密。

SA_OAuthTwitterEngine.m

  • (SetAccessToken)OAServiceTicket:(OAServiceTicket *) withData:(NSData *) data

在"SA_OAuthTwitterEngine.m“中创建"GSTwitPicEngine.m”类的对象&将访问令牌和访问秘密传递给"GSTwitPicEngine.m“,并在"SA_OAuthTwitterEngine.m”中设置"GSTwitPicEngine.m“的委托方法。

再换一次..。

必须交叉检查URLEncoding,同时对OAuth标头进行分类。

requestHeader generateRequestHeaders

这将根据Twitter库中的"OAuthConsumer“类进行。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5591562

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档