iPhone和Twitter API OAuth使用者密钥和秘密

时间:2011-06-05 19:21:39

标签: iphone uitableview twitter tableview mgtwitterengine

从Twitter加载数据时遇到问题。我在下面发布的方法可以工作大约5-10分钟,然后冻结我的消费者密钥....

我知道这是键,因为我已经在设备上安装了应用程序,然后我将进行更改并在模拟器上运行,它也会影响设备。这最后持续约30分钟,然后键似乎刷新自己并且工作而不对实际代码进行任何更改。有时我会进入Twitter Dev我的应用程序是并重置密钥并替换我的代码中的密钥,并且工作大约10分钟,然后同样的事情发生!

以下是我用来调用twitter OAuth并接收UITableView对象的代码。

- (void)viewDidAppear:(BOOL)animated
{
    if(_engine) return;

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

    UIViewController *controller = [SA_OAuthTwitterController controllerToEnterCredentialsWithTwitterEngine: _engine delegate: self];

    if (controller) 
        [self presentModalViewController: controller animated: YES];
    else
    {
        userAvatar.image = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://a2.twimg.com/profile_images/1361674958/Wintboard_200px.png" ]]];

        tweets = [[NSMutableArray alloc] init];
        authors = [[NSMutableArray alloc] init];
        avatarsURL =[[NSMutableArray alloc] init];
        friendsCount = [[NSMutableArray alloc] init];
        followerCount = [[NSMutableArray alloc] init];
        retweetCount = [[NSMutableArray alloc] init];

        //retweetCount = [[NSMutableArray alloc] init];

        [self updateStream:nil];
        [progressView.view removeFromSuperview];
    }
}

#pragma mark IBActions 

-(IBAction)updateStream:(id)sender
{
    // [_engine sendUpdate:[textfield text]];
    [_engine getFollowedTimelineSinceID:0 startingAtPage:0 count:100];

    //[_twitter getFollowedTimelineSinceID:0 startingAtPage:0 count:0];

    NSString *path = [[NSBundle mainBundle] pathForResource:@"unlock" ofType:@"caf"];
    AVAudioPlayer* theAudio = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];
    theAudio.delegate = self;
    [theAudio play];
}

-(IBAction)tweet:(id)sender
{   
    [_engine sendUpdate:[textfield text]];
    [self updateStream:nil];
    if (textfield isFirstResponder])
    {
        textfield.text = @"";
        [textfield resignFirstResponder];
    }
}

-(BOOL)textFieldShouldClear:(UITextField*)textfield
{
    return  YES;
}

- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
    // the user pressed the "Done" button, so dismiss the keyboard
    [textField resignFirstResponder];
    return YES;
}

// Return YES for supported orientations

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation) interfaceOrientation
{
    return YES;
}

#pragma mark UITableViewDataSource Methods 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section    
{    
    // [_engine sendUpdate:[textfield text]];
    [_engine getFollowedTimelineSinceID:0 startingAtPage:0 count:100];

    int count = [tweets count];
    int count2 = [authors count];
    int count3 = [avatarsURL count];

    //Return just enough cells to fill the screen during loading ....
    if (count == 0)
        count = MyCustomRowCount;

    return count = 100;
    return count2 = 100;
    return count3 = 100;

    // return  count;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSString *identifier = @"cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];
    if (cell == nil)
    { 
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:identifier] autorelease];
    }

/*
    //Here it adds a nice shadow to the table view but will crash on rotation and send a wird dump 
    tableView.layer.shadowColor = [[UIColor blackColor] CGColor];
    tableView.layer.shadowOffset = CGSizeMake(1.0f, 1.0f);
    tableView.layer.shadowRadius = 8.0f;
    tableView.layer.shadowOpacity = 1.0f;     
*/

    [cell.textLabel setNumberOfLines:1];
    [cell.textLabel setText:[(Tweet*)[authors objectAtIndex:indexPath.row] author]];  

    [cell.detailTextLabel setText:[(Tweet*)[tweets objectAtIndex:indexPath.row] tweet]];
    [cell.detailTextLabel setNumberOfLines:10];
    [cell.textLabel setTextColor:[UIColor darkGrayColor]];
    [cell.textLabel setShadowColor:[UIColor whiteColor]];
    [cell.textLabel setShadowOffset:CGSizeMake(0.5, 0.5)];
    [cell.detailTextLabel setTextColor:[UIColor blackColor]];
    //[cell.detailTextLabel setText:[(Tweet*)[retweetCount objectAtIndex:indexPath.row] reTweetCount]];
    [cell.textLabel setUserInteractionEnabled:YES];
    [cell.contentView setMultipleTouchEnabled:YES];

    // Here we use the new provided setImageWithURL: method to load the web image with SDWebImageManager
    [cell.imageView setImageWithURL:[NSURL URLWithString:[(Tweet*)[avatarsURL objectAtIndex:indexPath.row]avatarURL]]
    placeholderImage:[UIImage imageNamed:@"avatar.png"]];

    //add gradient to cell 
    UIImage *gradient = [UIImage imageNamed:@"gradientcell2.png"];
    UIImageView *cellimage = [[UIImageView alloc] initWithImage:gradient];
    cellimage.contentMode = UIViewContentModeScaleToFill;
    cell.backgroundView = cellimage;

    [cellimage release];      

    UIImage *selectedGradient = [UIImage imageNamed:@"selectedcell.png"];
    UIImageView *selectedCell = [[UIImageView alloc] initWithImage:selectedGradient];
    selectedCell.contentMode = UIViewContentModeScaleToFill;
    cell.selectedBackgroundView = selectedCell;    

    [tableView setBackgroundColor:[UIColor clearColor]];

    return cell;
}

1 个答案:

答案 0 :(得分:1)

是的抱歉我应该回来并回答这个问题!

首先确保您的请求没有超过Twitters API请求限制,我只是在重新加载我的表视图时。

在修复了这个错误之后,我继续重置我的密钥写了一个请求Twitter API使用xAuth“它只需要几天才能被接受”然后我就没有任何问题了。

直到我收到Twitter的来信,说我被录取了,之后我才没有使用我的钥匙。

我希望这会有所帮助,因为我知道会变得多么令人沮丧!

祝你好运!