3

Twitter-OAuth-iPhoneを使用しています。

で 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.)"

Twitter アプリケーションの設定を確認しました。

Type:                    Client
Default Access type:     Read & Write
4

4 に答える 4

2

api@twitter.com への xAuth アクセスを要求する必要があります。

于 2010-09-20T08:23:20.660 に答える
1

HTTP 401 は「無許可」エラーです。Twitter API の設定を再確認し、kOAuthConsumerSecretおよびkOAuthConsumerKey定数に正しい値を使用していることを確認してください。また、Twitter アプリが「ブラウザ」ではなく「クライアント」として登録されていることを確認してください。

于 2010-12-16T11:18:55.390 に答える
1

これはあなたの質問に答えるのに役立つかもしれません: 私は今それを理解しました:

Matt Gemmell と彼のソース コードを使用したと思いますが、Ben Gottlieb を使用した可能性もありますが、よく覚えていません。確かにマットだけど。

ただし、実際のツイート テキスト フィールド、ツイート ボタン、戻るボタンを保持する非表示のサブビューを作成して、ユーザーがビューを再び非表示にできるようにしました。

要約すると、元々非表示のサブビューを表示するボタンがあり、これを実行している間、ユーザーを認証します。このサブビューには、ツイートを投稿するためのツイート ボタンがあります。これが私が見つけたコードです。今、私は最小限のテストしか行っていませんが、皆さんが自力で出発してここから取得するだけで十分であることを願っています.

-(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ユーザーが最初にボタンをタップして認証を有効にしたかったのです。次に、起動されたビュー内でツイートを書くことができます。これがお役に立てば幸いです。

于 2011-06-01T19:02:23.030 に答える
0

Callback URLTwitter アプリケーション プロファイルでフィールドを設定します。

以下と同一である必要があります。
$request_token = $connection->getRequestToken(OAUTH_CALLBACK);

于 2012-06-04T02:18:33.230 に答える