2011-04-08 50 views
1

我想,如果我的權利,我使用類的_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

回答

7

不幸的是,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

0

您可以從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」 類