2010-05-20 106 views
3

我使用Twitter-OAuth-iPhone401未經授權在iPhone上使用twitter與oauth

當我嘗試在Twitter登錄與SA_OAuthTwitterEngine,我收到一個錯誤401 我接到委託呼籲:

- (void) OAuthTwitterController: (SA_OAuthTwitterController *) controller authenticatedWithUsername: (NSString *) username { 

但是當我嘗試只是後發出信息:

[_engine sendUpdate: [NSString stringWithFormat:@"Hello World"]]; 

我收到錯誤401:

failed with error: Error Domain=HTTP Code=401 "Operation could not be completed. (HTTP error 401.)" 

我有CHEC k我的twitter應用程序設置:

Type:     Client 
Default Access type:  Read & Write 

回答

1

HTTP 401是「未經授權的」錯誤。仔細檢查您的Twitter API設置,並確保您使用的常量值爲kOAuthConsumerSecretkOAuthConsumerKey。另外請確保您的Twitter應用程序已註冊爲「客戶端」而不是「瀏覽器」。

1

這可能有助於回答你的問題:我已經想通了剛纔:

我覺得我用馬特Gemmell和his source code雖然我可能使用本戈特利布,我不太記得了。很確定這是馬特。

但是我也做了創建一個隱藏的子視圖,其中包含實際的tweeting文本字段,tweet按鈕和一個返回按鈕,以便用戶可以再次隱藏該視圖。

所以總結一下,我有一個按鈕,它顯示了最初隱藏的子視圖,當它執行此操作時,它會對用戶進行身份驗證。這個子視圖然後有用於發佈推文的推文按鈕。這是我找到的代碼爲我工作的代碼。現在我只做了最低限度的測試,但我希望這足以讓你們獨立完成並從這裏開始。

-(IBAction)shareTwit:(id)sender { //This shows the tweet view and authorises the user and engine 
    tweetView.hidden = NO; 

    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) { 
      [self presentModalViewController: controller animated: YES]; 
     } 
     else { 
      [_engine sendUpdate: [NSString stringWithFormat: @"Already Updated. %@", [NSDate date]]]; 
     } 
    } 
} 

-(IBAction)updateTwitter:(id)sender { //This button sends the tweet to Twitter. 
    if ([_engine isAuthorized]) { 
     [_engine sendUpdate:tweetTextField.text]; 

     [tweetTextField resignFirstResponder]; 

     confirmation.text = @"Tweet sent successfully."; //This is an optional UILabel, if you would like the user to know if the tweet has been sent 
                // Currently, I haven't created a method where the user is told the sending failed. 
    } 
    else { 
     UIViewController *controller = [SA_OAuthTwitterController controllerToEnterCredentialsWithTwitterEngine:_engine delegate:self]; 

     if (controller) { 
      [self presentModalViewController: controller animated: YES]; 
     } 
     else { 
      [_engine sendUpdate: [NSString stringWithFormat: @"Already Updated. %@", [NSDate date]]]; 
     } 
    }  
} 

注意我沒有使用過viewDidLoad,主要是因爲我不同意它。我希望用戶先點擊shareTwit按鈕激活認證。然後在推出的視圖中,他們可以編寫他們的推文。我希望這可以幫助你!

0

在您的twitter應用程序配置文件中設置Callback URL字段。

應該是相同的:
$request_token = $connection->getRequestToken(OAUTH_CALLBACK);

相關問題