iphone – 如何使用twitter api v1.1(Twitter错误215)获取用户详
我使用twitter提供的twitter api来获取详细信息
不能执行它,甚至试图通过认证数据 像消费者密钥,消费者密钥,令牌,但结果是一样的. 我能够登录和接收twitter身份验证令牌,但无法获取用户详细信息. 以下代码由我使用(我正在使用MGtwitter引擎): NSMutableURLRequest *request =[[NSMutableURLRequest alloc]initWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"https://api.twitter.com/1.1/users/show.json?screen_name=%@",username]]]; NSData *returnData = [ NSURLConnection sendSynchronousRequest: request returningResponse: nil error: nil ]; NSString *returnString = [[NSString alloc]initWithData:returnData encoding:NSUTF8StringEncoding]; NSError *err = nil; twitterLogin = [NSJSONSerialization JSONObjectWithData:[returnString dataUsingEncoding:NSUTF8StringEncoding] options:NSJSONReadingMutableContainers error:&err]; 错误如下所示: errors = ( { code = 215; message = "Bad Authentication data"; } ); 解决方法
首先,您需要验证您的请求(获取权限).
第二,请参阅以下步骤: 下载FHSTwitterEngine Twitter图书馆. 2.将文件夹“FHSTwitterEngine”添加到您的项目中,然后添加#import“FHSTwitterEngine.h”. 3.将SystemConfiguration.framework添加到您的项目中.
UIButton *logIn = [UIButton buttonWithType:UIButtonTypeRoundedRect]; logIn.frame = CGRectMake(100,100,100); [logIn setTitle:@"Login" forState:UIControlStateNormal]; [logIn addTarget:self action:@selector(showLoginWindow:) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:logIn]; [[FHSTwitterEngine sharedEngine]permanentlySetConsumerKey:@"<consumer_key>" andSecret:@"<consumer_secret>"]; [[FHSTwitterEngine sharedEngine]setDelegate:self]; 并且不要忘记导入代理FHSTwitterEngineAccessTokenDelegate.
- (void)showLoginWindow:(id)sender { [[FHSTwitterEngine sharedEngine]showOAuthLoginControllerFromViewController:self withCompletion:^(BOOL success) { NSLog(success?@"L0L success":@"O noes!!! Loggen faylur!!!"); }]; } 当登录窗口出现时,输入您的Twitter用户名和密码来验证您的请求.
-(void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; [[FHSTwitterEngine sharedEngine]loadAccessToken]; NSString *username = [[FHSTwitterEngine sharedEngine]loggedInUsername];// self.engine.loggedInUsername; if (username.length > 0) { lbl.text = [NSString stringWithFormat:@"Logged in as %@",username]; [self listResults]; } else { lbl.text = @"You are not logged in."; } } - (void)storeAccessToken:(NSString *)accessToken { [[NSUserDefaults standardUserDefaults]setObject:accessToken forKey:@"SavedAccessHTTPBody"]; } - (NSString *)loadAccessToken { return [[NSUserDefaults standardUserDefaults]objectForKey:@"SavedAccessHTTPBody"]; }
- (void)listResults { dispatch_async(GCDBackgroundThread,^{ @autoreleasepool { [UIApplication sharedApplication].networkActivityIndicatorVisible = YES; // the following line contains a FHSTwitterEngine method wich do the search. dict = [[FHSTwitterEngine sharedEngine]searchTweetsWithQuery:@"#iOS" count:100 resultType:FHSTwitterEngineResultTypeRecent unil:nil sinceID:nil maxID:nil]; // NSLog(@"%@",dict); NSArray *results = [dict objectForKey:@"statuses"]; // NSLog(@"array text = %@",results); for (NSDictionary *item in results) { NSLog(@"text == %@",[item objectForKey:@"text"]); NSLog(@"name == %@",[[item objectForKey:@"user"]objectForKey:@"name"]); NSLog(@"screen name == %@",[[item objectForKey:@"user"]objectForKey:@"screen_name"]); NSLog(@"pic == %@",[[item objectForKey:@"user"]objectForKey:@"profile_image_url_https"]); } dispatch_sync(GCDMainThread,^{ @autoreleasepool { UIAlertView *av = [[UIAlertView alloc]initWithTitle:@"Complete!" message:@"Your list of followers has been fetched" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; [av show]; [UIApplication sharedApplication].networkActivityIndicatorVisible = NO; } }); } }); } 就这样. // statuses/user_timeline - (id)getTimelineForUser:(NSString *)user isID:(BOOL)isID count:(int)count; - (id)getTimelineForUser:(NSString *)user isID:(BOOL)isID count:(int)count sinceID:(NSString *)sinceID maxID:(NSString *)maxID; 而不是上面的搜索方法. 注意:请参阅FHSTwitterEngine.h以了解需要使用的方法. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |