2011-06-05 151 views
3

我從Twitter加載數據時遇到問題。下面我發佈的方法工作大約5-10分鐘,然後它凍結了我的消費者密鑰....iPhone和Twitter API OAuth消費者密鑰和祕密

我知道這是關鍵,因爲我有應用程序已經安裝在設備上工作,然後我會進行更改和在模擬器上運行,它也會影響設備。最後持續約30分鐘,然後這些密鑰似乎可以自我刷新,並且無需對實際代碼進行任何更改即可工作。有時候我會在Twitter上開發我的應用程序,並重置密鑰並替換我的代碼中的密鑰,並且工作約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; 
} 
+0

您是否找到解決方案?正如我所看到的,即使我的鑰匙在一段時間後停止工作 – Kavitha 2011-06-22 16:03:28

回答

1

是的抱歉,我應該回來回答這個問題!

首先確保您的請求不會超過Twitters API請求限制,我簡單地重新加載我的表視圖。

修復了這個錯誤之後,我重置了我的密鑰,並向Twitter API寫了一個請求,使用xAuth「只需要幾天時間就可以接受」,之後我就沒有任何問題了。

我沒有使用我的鑰匙,直到我收到來自Twitter的信函,說我被接受了,我從此沒有任何問題。

我希望這會有所幫助,因爲我知道這會變得多麼令人沮喪!

祝你好運!

相關問題