2013-07-12 24 views
0

我正在尝试添加一项功能,以允许用户通过Facebook/Twitter/Google +登录并在我的应用程序中留下评论。我也想显示其他有留下评论的用户的头像。代表应用程序的TWRequest调用?

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

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

回答

2

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

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); 
}]; 
+0

的'verifyCredentialsWithSuccessBlock:'回调参数是用户名,而不是OAuth凭证 – nst

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) { 
    // ... 
}]; 
+1

我不想让用户登录。我只想下载Twitter用户的头像,即使当前用户决定使用Facebook或Google而不是Twitter来登录,但由于我无法对API进行未经身份验证的调用,因此我只能使用仅限应用程序AUTH。 –

+0

@nst非常感谢!无法在任何地方找到文档来检索OAuth令牌,您让我的一天成为先生 –

相关问题