在ios中使用Swift和OAuth登录Twitter
我对斯威夫特和IOS很陌生。我想在我的swift iOS应用程序中使用OAuth实现使用twitter帐户登录 我实现了它,但我得到了 [{“消息”:“无法验证您的身份”,“代码”:32}]}在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上实现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库吗?