Как получить рисунок профиля в Твиттере, используя API 1.1 от iOS?
Я использую MGTwitterEngine lib для аутентификации учетной записи Twitter, но после успешного входа в систему я хочу получить изображение профиля пользователя, но не могу его получить, и следующий метод перестал работать:
https://api.twitter.com/1.1/users/profile_image?screen_name=username&size=bigger
Я только что попробовал выше метод, но безуспешно. Затем я провел много исследований по этому вопросу и, наконец, получил следующие API для получения информации о профиле пользователя, включая изображение профиля:
https://api.twitter.com/1.1/users/show.json?screen_name=username
Но этот API требует проверки подлинности путем передачи авторизации в заголовке запроса, который я не смог сгенерировать.
Вот мой код, который я попробовал:
здесь 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];
[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);
Но это всегда говорит Плохие данные аутентификации.
Пожалуйста помоги мне с этим...
1 ответ
Вот решение с использованием 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) {
//
}];