如何从iOS使用api 1.1获取twitter个人资料? [英] How to get twitter profile pic using api 1.1 from iOS?

查看:127
本文介绍了如何从iOS使用api 1.1获取twitter个人资料?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用MGTwitterEngine lib对Twitter帐户进行身份验证,但在成功登录后我想获取用户个人资料图片但无法获取并且以下方法停止工作:



https://api.twitter.com/1.1/users / profile_image?screen_name = username& size = greater



我刚试过上面的方法但没有成功。然后我做了很多关于它的研究,我终于得到了api以获取用户个人资料信息,其中包括个人资料照片:



https://api.twitter.com/1.1/users/show.json?screen_name=username



但是这个api需要通过在Request头中传递Authorization来进行身份验证,这是我无法生成的。



这是我的我试过的代码:



这里authdata是我成功登录后从MGTwitterEngine lib返回的字符串。

  NSString * authData = [[NSUserDefaults standardUserDefaults] valueForKey:@authData]; 
NSString * subAuthdata = [authData substringFromIndex:[authData rangeOfString:@oauth_token_secret =]。location];
subAuthdata = [subAuthdata substringToIndex:[subAuthdata rangeOfString:@& user_id =]。location];
NSLog(@%@,subAuthdata);

NSLog(@encoded:%@,[self base64Encode:subAuthdata]);

NSString * accessTokenHeaderToPost = [NSString stringWithFormat:@Basic%@,[self base64Encode:subAuthdata]];

NSString * twitURL = @https://api.twitter.com/1.1/users/show.json?screen_name=username;
NSMutableURLRequest * request = [[NSMutableURLRequest alloc] init];
[请求setURL:[NSURL URLWithString:twitURL]];
[request setHTTPMethod:@GET];
[请求setValue:accessTokenHeaderToPost forHTTPHeaderField:@Authorization];
NSError *错误;
NSURLResponse *回复;
NSData * responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:& response error:& err];
NSString * responseString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];

NSLog(@RESP:%@,responseString);

但它总是说不良认证数据。



<请帮助我......

解决方案

这是使用 STTwitter

  STTwitterAPI * twitter = [STTwitterAPI twitterAPIAppOnlyWithConsumerKey:@consumerSecret:@]; 

[twitter verifyCredentialsWithSuccessBlock:^(NSString * bearerToken){

[twitter getUsersShowForUserID:nil orScreenName:@barackobamaincludeEntities:nil successBlock:^(NSDictionary * user){

NSString * profileImageURLString = [user valueForKey:@profile_image_url];
NSURL * url = [NSURL URLWithString:profileImageURLString];
UIImage * profileImage = [UIImage imageWithContentsOfURL:url];

} errorBlock:^(NSError * error){
//
}];

} errorBlock:^(NSError * error){
//
}];


I am using MGTwitterEngine lib to authenticate Twitter account, but after successful login I want to get user profile pic but not able to get it and following method is stopped working:

https://api.twitter.com/1.1/users/profile_image?screen_name=username&size=bigger

I just tried above method but no success. Then I have did lot of research on it and I finally got following api to get user profile information which include profile pic:

https://api.twitter.com/1.1/users/show.json?screen_name=username

But this api requires authentication by passing Authorization in Request header which I was not able to generate.

Here is my code which I have tried:

here authdata is the string which I am getting back from MGTwitterEngine lib after successful login.

NSString *authData = [[NSUserDefaults standardUserDefaults] valueForKey:@"authData"];
NSString *subAuthdata = [authData substringFromIndex:[authData rangeOfString:@"oauth_token_secret="].location];
subAuthdata = [subAuthdata substringToIndex:[subAuthdata rangeOfString:@"&user_id="].location];
NSLog(@"%@", subAuthdata);

NSLog(@"encoded: %@", [self base64Encode:subAuthdata]);

NSString *accessTokenHeaderToPost = [NSString stringWithFormat:@"Basic %@", [self base64Encode:subAuthdata]];

NSString  *twitURL = @"https://api.twitter.com/1.1/users/show.json?screen_name=username";
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
[request setURL:[NSURL URLWithString: twitURL]];
[request setHTTPMethod:@"GET"];
[request setValue:accessTokenHeaderToPost forHTTPHeaderField:@"Authorization"];
NSError *err;
NSURLResponse *response;
NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&err];
NSString *responseString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];

NSLog (@"RESP: %@", responseString);

But it always says Bad authentication data.

Please help me on this...

解决方案

Here is a solution using STTwitter:

STTwitterAPI *twitter = [STTwitterAPI twitterAPIAppOnlyWithConsumerKey:@"" consumerSecret:@""];

[twitter verifyCredentialsWithSuccessBlock:^(NSString *bearerToken) {

    [twitter getUsersShowForUserID:nil orScreenName:@"barackobama" includeEntities:nil successBlock:^(NSDictionary *user) {

        NSString *profileImageURLString = [user valueForKey:@"profile_image_url"];
        NSURL *url = [NSURL URLWithString:profileImageURLString];
        UIImage *profileImage = [UIImage imageWithContentsOfURL:url];

    } errorBlock:^(NSError *error) {
        //
    }];

} errorBlock:^(NSError *error) {
    //
}];

这篇关于如何从iOS使用api 1.1获取twitter个人资料?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆