Rav*_*eja 10 iphone xcode ipad mgtwitterengine ios
我使用了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];
Run Code Online (Sandbox Code Playgroud)
错误如下所示:
errors = (
{
code = 215;
message = "Bad Authentication data";
} );
Run Code Online (Sandbox Code Playgroud)
M.A*_*ash 15
首先,您需要Authenticate您的请求(获得许可).
第二,请参阅以下步骤:
1.下载FHSTwitterEngine Twitter库.
2.将文件夹添加FHSTwitterEngine到您的项目中#import "FHSTwitterEngine.h".
3. SystemConfiguration.framework加入你的项目.
用法:1.在
[ViewDidLoad]添加以下代码中.
UIButton *logIn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
logIn.frame = CGRectMake(100, 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];
Run Code Online (Sandbox Code Playgroud)
并且不要忘记导入委托FHSTwitterEngineAccessTokenDelegate.
- 您需要获得您的请求的权限,使用以下方法将显示登录窗口:
- (void)showLoginWindow:(id)sender {
[[FHSTwitterEngine sharedEngine]showOAuthLoginControllerFromViewController:self withCompletion:^(BOOL success) {
NSLog(success?@"L0L success":@"O noes!!! Loggen faylur!!!");
}];
}
Run Code Online (Sandbox Code Playgroud)
呈现在登录窗口时,输入你的Twitter Username和Password对authenticate你的要求.
- 将以下方法添加到您的代码中:
-(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"];
}
Run Code Online (Sandbox Code Playgroud)
4.现在您已准备好通过以下方法获取您的请求(在此方法中,我创建了
Hashtag,以获取screen_name示例):
- (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;
}
});
}
});
}
Run Code Online (Sandbox Code Playgroud)
就这样.我刚刚从搜索查询中获取了screen_name,您可以使用以下方法为用户获取时间轴:
// 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;
Run Code Online (Sandbox Code Playgroud)
而不是上面的搜索方法.
注意:请参阅FHSTwitterEngine.h了解您需要使用的方法.注意:要获得<consumer_key>并且<consumer_secret>您需要访问此链接
以在Twitter中注册您的应用程序.
| 归档时间: |
|
| 查看次数: |
6306 次 |
| 最近记录: |