0

我正在将 twitter 集成到我的应用程序中。我成功打开推特页面,但 SA_OAuthTwitterEngine 委托方法未调用,下面是我的代码。

在推特按钮上单击

-(void)twitterLogin
{
    [self twitterLogout];
    if(!_engine)
    {
        _engine=[[[SA_OAuthTwitterEngine alloc] initOAuthWithDelegate: self]autorelease];
        _engine.consumerKey=NSLocalizedString(@"consumerKey", nil);
        _engine.consumerSecret=NSLocalizedString(@"consumerSecret", nil);
    }

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

-(void)twitterLogout
{    
    NSHTTPCookieStorage* cookies = [NSHTTPCookieStorage sharedHTTPCookieStorage];
    for (NSHTTPCookie* cookie in [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies]) {
        [cookies deleteCookie:cookie];
    }
    [_engine clearAccessToken];
    [_engine release];
    _engine=nil;
}

此方法完美运行,但未调用以下方法

- (void) storeCachedTwitterOAuthData: (NSString *) data forUsername: (NSString *) username 
{
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

    [defaults setObject: data forKey: @"authData"];
    [defaults synchronize];
    NSLog(@"%@",username);

}

先感谢您。

4

1 回答 1

-1

做这样的事情

`if(!_engine){  
        _engine = [[SA_OAuthTwitterEngine alloc] initOAuthWithDelegate:self];  
        _engine.consumerKey    = kOAuthConsumerKey;  
        _engine.consumerSecret = kOAuthConsumerSecret;  
    }   
    if(![_engine isAuthorized]){  
        UIViewController *controller = [SA_OAuthTwitterController controllerToEnterCredentialsWithTwitterEngine:_engine delegate:self];  

    if (controller){  
        [parent presentModalViewController: controller animated: YES];


        //hasTWLoggedInBefore=YES;
    }  
}  else{

    NSLog(@"IT IS ALRADY LOGIN");
    // Inform the delegate that Login is successful
    if ( [delegate respondsToSelector:@selector(TWloginStatus:)] ) 
    {
        // calling delegate method. For this method to function, the delegate should be implemented in the calling class.
        [delegate TWloginStatus:YES];               
        return;
    }       }` to load the twitter.
于 2012-06-21T13:48:46.430 回答