简体   繁体   English

使用STTwitterAPI一次使用Twitter登录

[英]One time login with twitter using STTwitterAPI

How can i check user is already login with twitter or not by using its authToken and authTokenSecret? 如何使用用户的authToken和authTokenSecret来检查用户是否已经使用Twitter登录?

I am using this code but its return value without wait for completing the block execution. 我正在使用此代码,但是它的返回值无需等待完成块执行。 How to use semaphore or something else to wait until block execute then function return its value. 如何使用信号量或其他方法等待块执行,然后函数返回其值。

- (BOOL)isTwitterLogin
{
  __block BOOL value;


    NSString *oauthToken=[[NSUserDefaults standardUserDefaults] valueForKey:@"iNtellTwitterToken"];
    NSString *oauthTokenSecret=[[NSUserDefaults standardUserDefaults] valueForKey:@"iNtellTwitterTokenSecret"];


    STTwitterAPI *twitterAPI = [STTwitterAPI twitterAPIWithOAuthConsumerKey:kTwitterConsumerKey consumerSecret:kTwitterConsumerSecret oauthToken:oauthToken oauthTokenSecret:oauthTokenSecret];

    [twitterAPI verifyCredentialsWithSuccessBlock:^(NSString *username)
     {
         /// we still good to go
         value=1;
     } errorBlock:^(NSError *error)
     {
         /// token has expired. User needs to login again
         value=0;
     }];
    return value;
}

i am looking for best way to execute this method.. 我正在寻找执行此方法的最佳方法。

Thanks in advance!!! 提前致谢!!!

The "best way" would probably keep the asynchronous behaviour: “最佳方法”可能会保持异步行为:

- (void)isTwitterLoginWithCompletionHandler:(void(^)(BOOL isTwitterLogin))completionHandler {

    NSString *oauthToken = [[NSUserDefaults standardUserDefaults] valueForKey:@"iNtellTwitterToken"];
    NSString *oauthTokenSecret = [[NSUserDefaults standardUserDefaults] valueForKey:@"iNtellTwitterTokenSecret"];

    if(oauthToken == nil || oauthTokenSecret == nil) {
        completionHandler(NO);
        return;
    }

    STTwitterAPI *twitterAPI = [STTwitterAPI twitterAPIWithOAuthConsumerKey:@""
                                                             consumerSecret:@""
                                                                 oauthToken:oauthToken
                                                           oauthTokenSecret:oauthTokenSecret];

    [twitterAPI verifyCredentialsWithSuccessBlock:^(NSString *username) {
        completionHandler(YES);
    } errorBlock:^(NSError *error) {
        completionHandler(NO);
    }];
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM