将Twitter整合到iPhone应用程序

将Twitter整合到iPhone应用程序

问题描述:

我希望将Twitter整合到我的应用程序中。我的项目是用ARC支持创建的。当我添加Twitter框架时,我还用-fno-objc-arc标记了.m文件。将Twitter整合到iPhone应用程序

我可以登录到Twitter(即,身份验证过程起作用),并且在应用程序崩溃时,当我点击推文按钮后,身份验证。

1.)这是首先被调用,微博认证工作正常。

-(void)loginTwitterUser{ 
    if(_engine) return; 


    _engine = [[SA_OAuthTwitterEngine alloc] initOAuthWithDelegate:self]; 
    _engine.consumerKey = @"xxxxxx"; 
    _engine.consumerSecret = @"xxxxxx"; 

    if (![_engine isAuthorized]) { 
     UIViewController *controller = [SA_OAuthTwitterController controllerToEnterCredentialsWithTwitterEngine:_engine delegate:self]; 
     if (controller) { 
      [self presentModalViewController:controller animated:YES]; 
     } 

    } 
  • _engine - 我已经宣布这是.h文件,但在.m

    1. 这就是我们要去的地方鸣叫

      -(void)tweetThis:(id)sender{ 
      [_engine sendUpdate:@"Tweet something"]; 
      } 
      
    2. 没有合成它

3.)其他delagate方法

#pragma mark SA_OAuthTwitterEngineDelegate 
- (void) storeCachedTwitterOAuthData: (NSString *) data forUsername: (NSString *) username { 
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    [defaults setObject: data forKey: @"authData"]; 
    [defaults synchronize]; 
} 

- (NSString *) cachedTwitterOAuthDataForUsername: (NSString *) username { 

    return [[NSUserDefaults standardUserDefaults] objectForKey: @"authData"]; 
} 


#pragma mark TwitterEngineDelegate 
- (void) requestSucceeded: (NSString *) requestIdentifier { 

    NSLog(@"Request %@ succeeded", requestIdentifier); 
} 

- (void) requestFailed: (NSString *) requestIdentifier withError: (NSError *) error { 

    NSLog(@"Request %@ failed with error: %@", requestIdentifier, error); 
} 

#pragma mark SA_OAuthTwitterController Delegate 

在NSLog的usernamenull。为什么是这样 ?

- (void) OAuthTwitterController: (SA_OAuthTwitterController *) controller authenticatedWithUsername: (NSString *) username { 

    NSLog(@"Authenticated with user %@", username); 

} 


- (void) OAuthTwitterControllerFailed: (SA_OAuthTwitterController *) controller { 

    NSLog(@"Authentication Failure"); 
} 

- (void) OAuthTwitterControllerCanceled: (SA_OAuthTwitterController *) controller { 

    NSLog(@"Authentication Canceled"); 
} 

MGTwitterEngine.m应用程序崩溃的return语句。

- (NSString *)sendUpdate:(NSString *)status inReplyTo:(unsigned long)updateID 
{ 
    if (!status) { 
     return nil; 
    } 

    NSString *path = [NSString stringWithFormat:@"statuses/update.%@", API_FORMAT]; 

    NSString *trimmedText = status; 
    if ([trimmedText length] > MAX_MESSAGE_LENGTH) { 
     trimmedText = [trimmedText substringToIndex:MAX_MESSAGE_LENGTH]; 
    } 

    NSMutableDictionary *params = [NSMutableDictionary dictionaryWithCapacity:0]; 
    [params setObject:trimmedText forKey:@"status"]; 
    if (updateID > 0) { 
     [params setObject:[NSString stringWithFormat:@"%u", updateID] forKey:@"in_reply_to_status_id"]; 
    } 
    NSString *body = [self _queryStringWithBase:nil parameters:params prefixed:NO]; 

    return [self _sendRequestWithMethod:HTTP_POST_METHOD path:path 
         queryParameters:params body:body 
          requestType:MGTwitterUpdateSendRequest 
          responseType:MGTwitterStatus]; 
} 

我该如何解决这个问题?

+1

你正在使用哪个框架?原生iOS或第三方? – 2012-01-06 19:52:01

+1

什么是崩溃错误? – Rayfleck 2012-01-06 20:46:46

+0

我使用的推特库http://www.vivianaranha.com/TwitterLib.zip – Illep 2012-01-07 04:38:58

检查您的SA_OAuthTwitterEngine.m并尝试执行下面的更改。您应该将http更改为https。

- (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; 
} 
+0

我已将http更改为https,但仍无法使用。 – 2013-04-17 10:55:11

你没有理由这么做,twitter集成已经优化。

检查这个链接http://www.raywenderlich.com/5519/beginning-twitter-in-ios-5

+0

这不适用于iOS 4.我需要它适用于iOS 4和iOS 5 – Illep 2012-03-09 13:51:30