4

我需要使用 SLrequest 访问直接消息。我使用 twitter 的反向 oAuth 获得了 oAuthToken 和 oAuthToken Secret。现在我需要知道如何从https://api.twitter.com/1.1/direct_messages.json url 获取直接消息。我尝试在 SLRequest 中添加 oAuthToken 和 oAuthTokenSecret 部分,但出现相同的错误,“不允许此应用程序访问或删除您的直接消息”。oAuthToken 和 oAuthTokenSecret 有什么用?如何使直接消息适用于应用程序?我已将应用程序的访问级别更改为“读取、写入和直接消息”。请帮助我解决问题。

4

2 回答 2

6

以下是如何访问 iOS 默认 Twitter 帐户的直接消息。

此示例使用STTwitter库,该库在内部使用 SLRequest 用于阶段 2,并使用定制的请求用于阶段 1。

NSString *CONSUMER_KEY = @"";
NSString *CONSUMER_SECRET = @"";

STTwitterAPI *twitter = [STTwitterAPI twitterAPIWithOAuthConsumerName:nil
                                                          consumerKey:CONSUMER_KEY
                                                       consumerSecret:CONSUMER_SECRET];

[twitter postReverseOAuthTokenRequest:^(NSString *authenticationHeader) {

    STTwitterAPI *twitterAPIOS = [STTwitterAPI twitterAPIOSWithFirstAccount];

    [twitterAPIOS verifyCredentialsWithSuccessBlock:^(NSString *username) {

        [twitterAPIOS postReverseAuthAccessTokenWithAuthenticationHeader:authenticationHeader
                                                            successBlock:^(NSString *oAuthToken,
                                                                           NSString *oAuthTokenSecret,
                                                                           NSString *userID,
                                                                           NSString *screenName) {

                                                                STTwitterAPI *x = [STTwitterAPI twitterAPIWithOAuthConsumerName:nil
                                                                                                                    consumerKey:CONSUMER_KEY
                                                                                                                 consumerSecret:CONSUMER_SECRET
                                                                                                                     oauthToken:oAuthToken
                                                                                                               oauthTokenSecret:oAuthTokenSecret];

                                                                [x verifyCredentialsWithSuccessBlock:^(NSString *username) {

                                                                    [x getDirectMessagesSinceID:nil count:10 successBlock:^(NSArray *messages) {
                                                                        // ...
                                                                    } errorBlock:^(NSError *error) {
                                                                        // ...
                                                                    }];

                                                                } errorBlock:^(NSError *error) {
                                                                    // ...
                                                                }];


                                                            } errorBlock:^(NSError *error) {
                                                                // ...
                                                            }];

    } errorBlock:^(NSError *error) {
        // ...
    }];

} errorBlock:^(NSError *error) {
    // ...
}];
于 2013-09-12T09:27:41.033 回答
-2

您不能使用反向身份验证来做到这一点。反向身份验证基本上使您能够以与根 iOS 应用程序相同的访问级别访问 OAuth 令牌,因此您可以在远程服务器上进行 twitter 处理。它不使用来自开发门户的 twitter 应用程序的扩展权限。正如 twitter 网站上所记录的,您必须使用完整的 OAuth 身份验证流程(包括 Web 弹出窗口)来获得用户访问直接消息的明确权限。

于 2013-09-08T23:53:17.083 回答