0

私のアプリでは、iPhone の設定で Twitter アカウントにサインインしていないときに、Twitter からツイートを取得したいと考えています。実際には、ユーザーのツイート (ツイートしたもの) のみを取得しています。しかし、私はすべてのフォロワーのツイートを取得したい.

この URL を使用しています: http://api.twitter.com/1/statuses/user_timeline.json

これに変更します: http://api.twitter.com/1/statuses/home_timeline.json エラーが発生しました。エラー: キャッチされていない例外 'NSInvalidArgumentException' が原因でアプリを終了しています。理由: ' * -[__NSArrayM insertObject:atIndex:]: オブジェクトを nil にすることはできません'

私はこのコードを使用しています。

- (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];
         }
     }

 }];
}
4

2 に答える 2

0

これを試して:

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

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

postRequest.account = twitterAccount;
于 2014-02-15T17:49:29.590 に答える
0

応答を確認します。それは違いない

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

応答は

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

ホームタイムラインは認証が必要なためです。

iOS 5 で twitter を取得する方法を確認する

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

ただし、ユーザーは twitter にサインインする必要があります。

iOS 5 twitter を使用したくない場合は、 oAuth で他のライブラリを使用してみてください。例: https://github.com/bengottlieb/Twitter-OAuth-iPhone

于 2013-02-04T06:05:12.570 に答える