TWRequest代表app打电话?

时间:2013-07-12 09:20:28

标签: ios twitter

我正在尝试添加一项功能,允许用户通过Facebook / Twitter / Google +登录,并在我的应用中留言。我还想显示已留下评论的其他用户的头像。

如果用户之前已使用Twitter登录,我可以使用TWRequest使用[request setAccount:self.account]来调用API,但如果没有,则请求返回"Bad Authentication data"

我在Twitter上创建了一个应用程序,我如何在TWRequest中使用消费者密钥和消费者密钥,或者是那些仅用于OAuth的用户?

2 个答案:

答案 0 :(得分:2)

Application-only authentication的帮助下使用STTwitter解决了我的问题。

apiWrapper = [STTwitterAPIWrapper
              twitterAPIApplicationOnlyWithConsumerKey:@"..."
              consumerSecret:@"..."];


[apiWrapper verifyCredentialsWithSuccessBlock:^(NSString *token) {
    DDLogInfo(@"Twitter App logged in with token: %@",token);
} errorBlock:^(NSError *error) {
    DDLogCError(@"Twitter verify credentials error %@",error);
}];

答案 1 :(得分:2)

考虑使用reverse auth.

反向身份验证的最常见用例。允许用户使用OS X或iOS Twitter帐户注册/登录远程服务。

iOS/OSX     Twitter     Server
|------------>|             |   reverse auth.
|< - - - - - -|             |   access tokens
|             |             | 
|-------------------------->|   access tokens
|             |
|             |<------------|   access Twitter on user's behalf
|             | - - - - - ->|

以下是如何使用STTwitter进行反向身份验证:

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) {

                                                                // use the tokens...

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

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

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