ios - 使用 STTwitterAPI 使用 twitter 登录一次

标签 ios objective-c authentication semaphore sttwitter

如何使用 authToken 和 authTokenSecret 检查用户是否已登录 Twitter?

我正在使用此代码,但其返回值无需等待完成 block 执行。如何使用信号量或其他东西来等待 block 执行然后函数返回其值。

- (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;
}

我正在寻找执行此方法的最佳方法..

提前致谢!!!

最佳答案

“最好的方法”可能会保持异步行为:

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

关于ios - 使用 STTwitterAPI 使用 twitter 登录一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29119135/

相关文章:

ios - 如何从现有的 View Controller 类中调用函数?

objective-c - 释放所有缓存数据

azure - Azure Function 如何针对 SignalR 进行身份验证?

php - jQuery、PHP、MySQL 登录保留页面查询

ios - 应用程序 :openURL:options: not called after opening universal link

ios - ios 应用商店的模拟器屏幕截图会导致元数据被拒绝吗?

ios - UITableView rowHeight UITableViewAutomaticDimension 单元格首次加载后高度错误

ios - 从 Facebook 帖子上的共享链接打开 iOS 应用程序

objective-c - Xcode:我应该如何组织我的多窗口用户界面项目?

authentication - 如何更改 ".AspNetCore.Identity.Application"cookie 过期时间?