在ios中使用Swift和OAuth登录Twitter

在ios中使用Swift和OAuth登录Twitter,ios,swift,twitter-oauth,Ios,Swift,Twitter Oauth,我对斯威夫特和IOS很陌生。我想在我的swift iOS应用程序中使用OAuth实现使用twitter帐户登录 我实现了它,但我得到了 [{“消息”:“无法验证您的身份”,“代码”:32}]} 错误是的,在iOS上实现twitter的OAuth是相当繁重的。在我的应用程序中,我使用ACAccountStore进行twitter身份验证。我可以推荐你们使用图书馆 太容易了 我使用的框架非常好。另外,请观看此视频并查看sttwitterdemios演示以了解更多信息 步骤1:创建Twitter应用程

我对斯威夫特和IOS很陌生。我想在我的swift iOS应用程序中使用OAuth实现使用twitter帐户登录

我实现了它,但我得到了

[{“消息”:“无法验证您的身份”,“代码”:32}]}


错误

是的,在iOS上实现twitter的OAuth是相当繁重的。在我的应用程序中,我使用
ACAccountStore
进行twitter身份验证。我可以推荐你们使用图书馆

太容易了

我使用的框架非常好。另外,请观看此视频并查看sttwitterdemios演示以了解更多信息

步骤1:创建Twitter应用程序并获取消费者密钥和消费者机密

步骤2:下载STTwitter框架并将文件拖放到您的Xcode项目中

步骤3:UIWebView/Safari登录

- (IBAction)signInWithTwitterClicked:(id)sender {
    //login by website
    self.twitter = [STTwitterAPI twitterAPIWithOAuthConsumerKey:CONSUMER_KEY
                                                 consumerSecret:CONSUMER_SECRETE];
    [_twitter postTokenRequest:^(NSURL *url, NSString *oauthToken) {
        NSLog(@"URL: %@", url);
        NSLog(@"OauthToken: %@", oauthToken);
       // if(1) {
         //   [[UIApplication sharedApplication] openURL:url];
        //} else {
        //WebViewVc taken from STTwitterDemoiOS  demo.
            WebViewVC *webViewVC = [self.storyboard instantiateViewControllerWithIdentifier:@"WebViewVC"];
            [self presentViewController:webViewVC animated:YES completion:^{
                NSURLRequest *request = [NSURLRequest requestWithURL:url];
                [webViewVC.webView loadRequest:request];
            }];
       // }
    } authenticateInsteadOfAuthorize:NO
                    forceLogin:@(YES)
                    screenName:nil
                 oauthCallback:@"myapp://twitter_access_tokens/"
                    errorBlock:^(NSError *error) {
                        NSLog(@"-- error: %@", error);
                      //  _loginStatusLabel.text = [error localizedDescription];
    }];

}
//步骤4和步骤5导入回调到我们的应用程序

步骤4:配置info.plist,如图所示

步骤5:处理应用程序委托方法

    - (NSDictionary *)parametersDictionaryFromQueryString:(NSString *)queryString {

        NSMutableDictionary *md = [NSMutableDictionary dictionary];

        NSArray *queryComponents = [queryString componentsSeparatedByString:@"&"];

        for(NSString *s in queryComponents) {
            NSArray *pair = [s componentsSeparatedByString:@"="];
            if([pair count] != 2) continue;

            NSString *key = pair[0];
            NSString *value = pair[1];

            md[key] = value;
        }

        return md;
    }


    - (BOOL)application:(UIApplication *)application
                openURL:(NSURL *)url
      sourceApplication:(NSString *)sourceApplication
             annotation:(id)annotation
    {
        //Twitter integration

       // if ([[url scheme] isEqualToString:@"myapp"] == NO) return NO;


        NSDictionary *d = [self parametersDictionaryFromQueryString:[url query]];
        NSString *token = d[@"oauth_token"];
        NSString *verifier = d[@"oauth_verifier"];
       // NSLog(@"Twitter Token=> %@\n Twitter Verifier=>%@",token,verifier);
        ViewController *vc = (ViewController *)[[self window] rootViewController];
        StartupViewController *startVc=(StartupViewController *)[[vc childViewControllers] objectAtIndex:0];
        [startVc setOAuthToken:token oauthVerifier:verifier];

//startVc is my controller where my "Login with twitter" button is there.

        //if no Facebook integration then return YES instead if return    //[FBAppCall handleOpenURL:url sourceApplication:sourceApplication];

 //Facebook Integration 
        return [FBAppCall handleOpenURL:url sourceApplication:sourceApplication];

    }
步骤6:获取用户凭据

-(void)setOAuthToken:(NSString *)token oauthVerifier:(NSString *)verifier {

    // in case the user has just authenticated through WebViewVC
    [self dismissViewControllerAnimated:YES completion:^{
       //Dismiss presented controller.
    }];

    [_twitter postAccessTokenRequestWithPIN:verifier successBlock:^(NSString *oauthToken, NSString *oauthTokenSecret, NSString *userID, NSString *screenName) {
        //Here is your Ans.
        NSLog(@"SUCCESS screenName: %@ ,userID=%@", screenName,userID);

    } errorBlock:^(NSError *error) {

        NSLog(@"-- %@", [error localizedDescription]);
    }];
}

希望这能对一些人有所帮助。

谢谢你一步一步的解释,但是你的名为“Twitter应用程序唯一身份验证”的视频链接不起作用。你能再评论一下正确的视频链接吗?你能一步一步地给我一个Swift而不是目标C吗?你能给我一个Swift库吗?