2013-02-04 40 views
0

在我的應用程序中,我想從Twitter中獲取推文時未登錄到iPhone中的設置的Twitter帳戶。其實我只收到用戶推文(我發推文)。但我想要獲得所有關注者的推文。無法獲取Twitter家庭時間線鳴叫

我使用這個網址:http://api.twitter.com/1/statuses/user_timeline.json

我改成這樣:http://api.twitter.com/1/statuses/home_timeline.json發生錯誤。 錯誤:終止應用程序由於未捕獲的異常 'NSInvalidArgumentException',原因是: '* - [__ NSArrayM insertObject:atIndex:]:對象不能是零'

我使用這個代碼。

- (IBAction)twitterButtonPressed:(UIButton *)sender 
{ 
    [self.usernameTextField resignFirstResponder]; 
    self.nameString = self.usernameTextField.text; 
    NSURL *timelineUrl = [NSURL URLWithString:@"http://api.twitter.com/1/statuses/home_timeline.json"]; 

    NSMutableDictionary *parameters = 
    [[NSMutableDictionary alloc] init]; 
    [parameters setObject:self.nameString forKey:@"screen_name"]; 
    [parameters setObject:@"50" forKey:@"count"]; 
    [parameters setObject:@"1" forKey:@"include_entities"]; 

    SLRequest *postRequest = [SLRequest requestForServiceType:SLServiceTypeTwitter requestMethod:SLRequestMethodGET URL:timelineUrl parameters:parameters]; 

    [postRequest performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error) 
    { 
     if (responseData != nil) 
     { 
      NSError *error = nil; 
      self.dataSource = [NSJSONSerialization JSONObjectWithData:responseData options:NSJSONReadingMutableLeaves error:&error]; 

     NSLog(@" tweet inindex 0 %@",[self.dataSource valueForKey:@"text"]); 

     NSLog(@"ghjgjhdgjhdgjsgdjgsdjg %d",dataSource.count); 

      if (self.dataSource.count) 
      { 
      [self performSelectorOnMainThread:@selector(homeView) withObject:nil waitUntilDone:YES]; 
     } 
    } 

}]; 
} 

回答

0

檢查響應。它必須是

NSLog(@"%@",[NSJSONSerialization JSONObjectWithData:responseData options:NSJSONReadingMutableLeaves error:&error]); 

的反應可能是

{ 
    errors =  (
       { 
      code = 215; 
      message = "Bad Authentication data"; 
     } 
    ); 
} 

,因爲家裏的時間表是需要認證。

檢查如何讓Twitter的與iOS 5

https://dev.twitter.com/docs/ios/making-api-requests-twrequest

,但用戶必須在Twitter上有登入。

如果你不想使用iOS 5的Twitter的,儘量用其他圖書館使用OAuth,例如https://github.com/bengottlieb/Twitter-OAuth-iPhone

0

試試這個:

NSArray *arrayOfAccounts = [account accountsWithAccountType:accountType]; 
ACAccount *twitterAccount = [arrayOfAccounts lastObject]; 

SLRequest *postRequest = [SLRequest requestForServiceType:SLServiceTypeTwitter requestMethod:SLRequestMethodGET URL:requestURL parameters:parameters]; 

postRequest.account = twitterAccount;