Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cocoa touch setAccessToken时twitpic API GSTwitPicEngine错误_Cocoa Touch_Api_Ios4_Twitter Oauth_Twitpic - Fatal编程技术网

Cocoa touch setAccessToken时twitpic API GSTwitPicEngine错误

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

我尝试使用GSTwitPicEngine类在twitter上共享图像
但这是一个错误

因为我们必须设置
[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]
    • 用这句话: