我使用Fabric来添加"使用Twitter登录"我的应用程序中的按钮登录过程运行正常,但我不知道如何获取记录用户的个人资料图片。
TWTRSession中是否有任何带有此信息的属性(如userName和userID)?看着它,但我没有找到任何东西?
[TWTRLogInButton buttonWithLogInCompletion:^(TWTRSession *session, NSError *error) {
// I get user data here...
// and need to get user Twitter's 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);
}];
}];
答案 0 :(得分:13)
对于那些收到此错误的人:
Value of type 'Twitter' has no member 'APIClient'
这帮助了我,
let twitterClient = TWTRAPIClient(userID: userID)
twitterClient.loadUserWithID(userID) { (user:TWTRUser?, error:NSError?) in
print(user?.profileImageURL)
}
答案 1 :(得分:7)
尝试使用以下代码获取个人资料图片 -
Swift 3
let twitterClient = TWTRAPIClient(userID: session?.userID)
twitterClient.loadUser(withID: (session?.userID)!, completion: { (user, error) in
print(user!.profileImageURL)
})
答案 2 :(得分:6)
我不认为TWTRSession对象具有用户的图像,但您可以使用该会话来请求TWTRUser对象,这将具有您所需的内容。
答案 3 :(得分:6)
在swift中执行此操作的方法如下:
Twitter.sharedInstance().APIClient.loadUserWithID( session.userID )
{
(user, error) -> Void in
if( user != nil )
{
println( user.profileImageURL )
}
}
我希望这会有所帮助。
答案 4 :(得分:6)
试试这个:
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];
答案 5 :(得分:2)
[[[Twitter sharedInstance] APIClient] loadUserWithID:[session userID] completion:^(TWTRUser *user, NSError *error) {
}];
答案 6 :(得分:1)
以下是我如何获得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);
}];
}
}];
答案 7 :(得分:1)
要使图片变大,可以按如下所示构建URL:
if let twitterId = session.userID{
let twitterClient = TWTRAPIClient(userID: twitterId)
twitterClient.loadUser(withID: twitterId) {(user, error) in
if let userName = user?.screenName{
let url = "https://twitter.com/\(userName)/profile_image?size=original")
}
}
}
此方法使用Twitter用户名,然后将其重定向到真实的个人资料图片大小。