如何使用iOS的api 1.1获取twitter个人资料图片



我正在使用MGTwitterEngine lib对Twitter帐户进行身份验证,但在成功登录后,我想获得用户配置文件图片,但无法获得,以下方法已停止工作:

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

我只是尝试了上述方法,但并没有成功。然后我对它做了很多研究,我终于得到了以下api来获取用户配置文件信息,其中包括配置文件图片:

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

但这个api需要通过在请求标头中传递Authorization来进行身份验证,而我无法生成该标头。

这是我尝试过的代码:

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

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);

但它总是说身份验证数据不正确。

请帮我一下。。。

下面是一个使用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) {
    //
}];

最新更新