2012-05-18 9 views
7

私のアプリにSA_OAuthTwitterEngineを追加しましたが、私は非常に奇妙な問題があります。TwitterエンジンSA_OAuthTwitterEngineの統合ですか?

- (void) OAuthTwitterController: (SA_OAuthTwitterController *) controller authenticatedWithUsername: (NSString *) username 
{ 
    [_engine sendUpdate:[NSString stringWithFormat:@"This Tweet for testing!"]]; 
    NSLog(@"Authenicated for %@", username); 
} 

[_engine sendUpdate:[NSString stringWithFormat:@"This Tweet for testing!"]];上のアプリのクラッシュを:私は私のアプリがクラッシュしますTwitterへでログインした場合。 [_engine sendUpdate:nil];を代わりに使用するとクラッシュすることなく動作しますが、私のアカウントからはツイートを送信できません。

私はsendUpdate方法で追跡しようとしていますし、私はクラッシュレポートがあり、機能を以下に[theRequest prepare];文で

- (NSString *)_sendRequestWithMethod:(NSString *)method path:(NSString *)path queryParameters:(NSDictionary *)params body:(NSString *)body requestType:(MGTwitterRequestType)requestType responseType:(MGTwitterResponseType)responseType 
{ 
    NSString *fullPath = path; 
    NSString *urlString = [NSString stringWithFormat:@"%@://%@/%@", (_secureConnection) ? @"https" : @"http", _APIDomain, fullPath]; 
    NSURL *finalURL = [NSURL URLWithString:urlString]; 
    if (!finalURL) { 
     return nil; 
    } 
OAMutableURLRequest *theRequest = [[OAMutableURLRequest alloc] initWithURL:finalURL consumer:self.consumer token:_accessToken realm: nil signatureProvider:nil]; 
    if (method) { 
     [theRequest setHTTPMethod:method]; 
    } 
    [theRequest setHTTPShouldHandleCookies:NO]; 

    // Set headers for client information, for tracking purposes at Twitter. 
    [theRequest setValue:_clientName forHTTPHeaderField:@"X-Twitter-Client"]; 
    [theRequest setValue:_clientVersion forHTTPHeaderField:@"X-Twitter-Client-Version"]; 
    [theRequest setValue:_clientURL  forHTTPHeaderField:@"X-Twitter-Client-URL"]; 

    // Set the request body if this is a POST request. 
    BOOL isPOST = (method && [method isEqualToString:@"POST"]); 
    if (isPOST) { 
     // Set request body, if specified (hopefully so), with 'source' parameter if appropriate. 
     NSString *finalBody = @""; 
     if (body) { 
      finalBody = [finalBody stringByAppendingString:body]; 
     } 
     if (_clientSourceToken) { 
      finalBody = [finalBody stringByAppendingString:[NSString stringWithFormat:@"%@source=%@", (body) ? @"&" : @"?" , _clientSourceToken]]; 
     } 

     if (finalBody) { 
      [theRequest setHTTPBody:[finalBody dataUsingEncoding:NSUTF8StringEncoding]]; 
     } 
    } 
    [theRequest prepare]; 

    // Create a connection using this request, with the default timeout and caching policy, 
    // and appropriate Twitter request and response types for parsing and error reporting. 
    MGTwitterHTTPURLConnection *connection; 
    connection = [[MGTwitterHTTPURLConnection alloc] initWithRequest:theRequest delegate:self requestType:requestType responseType:responseType]; 

    if (!connection) { 
     return nil; 
    } else { 
     [_connections setObject:connection forKey:[connection identifier]]; 
    } 

    return [connection identifier]; 
} 

を実際の問題を抱えて、

0 0x01f023ef in CFRelease() 
1 0x0008d04c in -[OAMutableURLRequest URLEncodedString:] (self=0x7bc673b0,  _cmd=0x9ee5f, string=0x0) at /Users/ben/Dropbox/Dev/External Projects/Twitter-OAuth-iPhone/OAuthConsumeriPhoneLib/OAuthConsumerSrc/OAMutableURLRequest.m:287 
2 0x0008bbe3 in -[OAMutableURLRequest prepare] (self=0x7bc673b0, _cmd=0x978cc) at /Users/ben/Dropbox/Dev/External Projects/Twitter-OAuth-iPhone/OAuthConsumeriPhoneLib/OAuthConsumerSrc/OAMutableURLRequest.m:131 
3 0x00088460 in -[SA_OAuthTwitterEngine _sendRequestWithMethod:path:queryParameters:body:requestType:responseType:] (_cmd=0x96833, method=0xc0250, body=0x7b971210, requestType=<value temporarily unavailable, due to optimizations>) at SA_OAuthTwitterEngine.m:315 

4 0x0007f673 in -[MGTwitterEngine sendUpdate:inReplyTo:] (self=<value temporarily unavailable, due to optimizations>, _cmd=0x96914, updateID=2073243024) at MGTwitterEngine.m:1019 

5 0x0007f496 in -[MGTwitterEngine sendUpdate:] (self=0x7b932d90, _cmd=0x95e02, status=0xc0510) at MGTwitterEngine.m:995 

6 0x0007bf3f in -[DMUAppDelegate OAuthTwitterController:authenticatedWithUsername:] (self=0x7b918a20, _cmd=0x96152) at DMUAppDelegate.m:572 

7 0x0008503b in -[SA_OAuthTwitterController gotPin:] (_cmd=0x975b4, pin=0x7ae573e0) at SA_OAuthTwitterController.m:125 

8 0x00086137 in -[SA_OAuthTwitterController webViewDidFinishLoad:] (self=0x7b944a00, _cmd=0xf070e2, webView=0x7ae46750) at SA_OAuthTwitterController.m:224 

9 0x00be036a in -[UIWebView webView:didFinishLoadForFrame:]() 

10 0x00be1956 in -[UIWebViewWebViewDelegate webView:didFinishLoadForFrame:]() 

11 0x01f5c51d in __invoking___() 

12 0x01f5c437 in -[NSInvocation invoke]() 

13 0x01f8749a in -[NSInvocation invokeWithTarget:]() 

14 0x03462aff in -[_WebSafeForwarder forwardInvocation:]() 
15 0x01f5d0c9 in ___forwarding___() 
16 0x01f5cce2 in __forwarding_prep_0___() 

17 0x01f5c51d in __invoking___() 
18 0x01f5c437 in -[NSInvocation invoke]() 

19 0x04005ae3 in SendMessage() 
20 0x04006115 in HandleDelegateSource() 

21 0x01fca97f in __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__() 
22 0x01f2db73 in __CFRunLoopDoSources0() 
23 0x01f2d454 in __CFRunLoopRun() 
24 0x01f2cdb4 in CFRunLoopRunSpecific() 
25 0x01f2cccb in CFRunLoopRunInMode() 
26 0x01e60879 in GSEventRunModal() 
27 0x01e6093e in GSEventRun() 

28 0x00a29a9b in UIApplicationMain() 
29 0x00040296 in main (argc=1, argv=0xc003c604) at /Users/dhirenshah/Desktop/Projects/Projects/DMU/DMU/main.m:16 
(gdb) 

答えて

3

はい、最後に私は解決私の問題。私はコードを置き換えるだけで、

- (SA_OAuthTwitterEngine *) initOAuthWithDelegate: (NSObject *) delegate 
    { 

    if (self = (id) [super initWithDelegate: delegate]) { 
     self.requestTokenURL = [NSURL URLWithString: @"https://twitter.com/oauth/request_token"]; 
     self.accessTokenURL = [NSURL URLWithString: @"https://twitter.com/oauth/access_token"]; 
     self.authorizeURL = [NSURL URLWithString: @"https://twitter.com/oauth/authorize"]; 
    } 
    return self; 
} 

SA_OAuthTwitterEngine.m機能を変更しています。私はMGTwitterEngine crash in iOS5、このリンクから助けを得ました。

+0

は私にとっては機能しません。 –

+0

このエラーはありますか? @ArnleeVizcayno – Tirth

+0

現在、私はiPhone 4sのiOS 6.1.3を使用しています。それは本当に私にエラー、ちょうどクラッシュを与えません。私がそれをトレースすると、[theRequest prepare]メソッドを指しています。私はあなたが含まれているリンクから固定をたどった。 –

0

私は上記のコードに変更を加えました。これは、twitter apiが変更されて古いものが動作しなくなるためです。

し、新しいユーザーのために、彼らはMGTwitterEnginerと上記のフォーマットを使用している場合、それは動作しません、あなたは

self.requestTokenURL = [NSURL URLWithString交換する必要があります://api.twitter:https」の@を.com/oauth/request_token "]; self.accessTokenURL = [NSURL URLWithString:@ "https://api.twitter.com/oauth/access_token"]; self.authorizeURL = [NSURL URLWithString:@ "https://api.twitter.com/oauth/authorize"];

1

私はiOS 6.1.3を実行しており、テスト用のデバイスはiPhone 4です。私はxcodeが[theRequest prepare];メソッドにクラッシュを指摘した同じエラー/クラッシュを得ました。マイ固定

されました:

この行に自動解放を置くとつぶやきを投稿する前にもう一度 [_engine isAuthorized]をチェック
 OAMutableURLRequest *theRequest = [[[OAMutableURLRequest alloc]   
       initWithURL:finalURL 
       consumer:self.consumer 
       token:_accessToken 
       realm: nil 
       signatureProvider:nil] autorelease]; 

 if ([_engine isAuthorized]) 
     { 
      NSLog(@"post Tweet"); 
      . . . . . . 
     } else { 
      NSLog(@"cant post Tweet"); 
      . . . . . . 
     } 

私はまだいないよので、私は、さらに多くのexpalinすることはできませんこれに精通していますが、これは私のために働く。

+0

cool。この質問と一緒にあなたの解決策を共有してくださってありがとうございます。 – Tirth

関連する問題