Ответ 1
Я не думаю, что у объекта TWTRSession есть образ пользователя, но вы можете использовать сеанс для запроса объекта TWTRUser, и он будет иметь то, что вам нужно.
Я использую Fabric, чтобы добавить кнопку "Войти в Twitter" в своем приложении. Вход в систему работает нормально, но я не могу (если возможно), как получить зарегистрированный образ профиля пользователя.
Есть ли какое-либо свойство внутри TWTRSession с этой информацией (например, userName и userID)? Посмотрел, но ничего не нашел?
[TWTRLogInButton buttonWithLogInCompletion:^(TWTRSession *session, NSError *error) {
// I get user data here...
// and need to get user Twitter profile image
}];
Спасибо
ИЗМЕНИТЬ
Благодаря ответу sak, я понял, как это сделать.
[TWTRLogInButton buttonWithLogInCompletion:^(TWTRSession *session, NSError *error) {
[[[Twitter sharedInstance] APIClient] loadUserWithID:session.userID completion:^(TWTRUser *user, NSError *error) {
NSLog(@"User image %@", user.profileImageURL);
}];
}];
Я не думаю, что у объекта TWTRSession есть образ пользователя, но вы можете использовать сеанс для запроса объекта TWTRUser, и он будет иметь то, что вам нужно.
Для тех, кто получает эту ошибку:
Value of type 'Twitter' has no member 'APIClient'
Это помогло мне,
let twitterClient = TWTRAPIClient(userID: userID)
twitterClient.loadUserWithID(userID) { (user:TWTRUser?, error:NSError?) in
print(user?.profileImageURL)
}
Способ сделать это быстро:
Twitter.sharedInstance().APIClient.loadUserWithID( session.userID )
{
(user, error) -> Void in
if( user != nil )
{
println( user.profileImageURL )
}
}
Надеюсь, это поможет.
Попробуйте следующее:
TWTRLogInButton *logInButton = [TWTRLogInButton buttonWithLogInCompletion:^(TWTRSession *session, NSError *error) {
// play with Twitter session
if (session) {
NSLog(@"Twitter signed in as -> name = %@ id = %@ ", [session userName],[session userID]);
/* Get user info */
[[[Twitter sharedInstance] APIClient] loadUserWithID:[session userID]
completion:^(TWTRUser *user,
NSError *error)
{
// handle the response or error
if (![error isEqual:nil]) {
NSLog(@"Twitter info -> user = %@ ",user);
NSString *urlString = [[NSString alloc]initWithString:user.profileImageLargeURL];
NSURL *url = [[NSURL alloc]initWithString:urlString];
NSData *pullTwitterPP = [[NSData alloc]initWithContentsOfURL:url];
UIImage *profImage = [UIImage imageWithData:pullTwitterPP];
} else {
NSLog(@"Twitter error getting profile : %@", [error localizedDescription]);
}
}];
} else {
NSLog(@"Twitter error signed in : %@", [error localizedDescription]);
}
}];
logInButton.center = self.view.center;
[self.view addSubview:logInButton];
Попробуйте ввести код, чтобы получить изображение профиля -
Swift 3
let twitterClient = TWTRAPIClient(userID: session?.userID)
twitterClient.loadUser(withID: (session?.userID)!, completion: { (user, error) in
print(user!.profileImageURL)
})
[[[Twitter sharedInstance] APIClient] loadUserWithID:[session userID] completion:^(TWTRUser *user, NSError *error) {
}];
Вот как я могу получить userId, userName, authToken, authTokenSecret и profileImageURL
[[Twitter sharedInstance] logInWithCompletion:^(TWTRSession *session, NSError *error) {
if (session != nil) {
SPTWUser *user = [[SPTWUser alloc] init];
user.userID = session.userID;
user.userName = session.userName;
user.authToken = session.authToken;
user.authTokenSecret = session.authTokenSecret;
TWTRAPIClient *client = [[TWTRAPIClient alloc] initWithUserID:user.userID];
[client loadUserWithID:user.userID completion:^(TWTRUser * _Nullable user, NSError * _Nullable error) {
NSLog(@"%@",user.profileImageURL);
}];
}
}];
Ссылка Класс TWTRAPIClient, Класс TWTRUser, TWTRSession Class