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 设置并确保您使用了正确的kOAuthConsumerSecretkOAuthConsumerKey常量值。还要确保您的 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]]];   
        }   
    }       
}

请注意,我没有使用 a viewDidLoad,主要是因为我不同意它。我希望用户首先点击shareTwit按钮来激活身份验证。然后在启动的视图中,他们可以编写他们的推文。我希望这可以帮助你!

于 2011-06-01T19:02:23.030 回答
0

Callback URL在您的 twitter 应用程序配置文件中设置该字段。

它应该与以下内容相同:
$request_token = $connection->getRequestToken(OAUTH_CALLBACK);

于 2012-06-04T02:18:33.230 回答