2015-02-20 6 views
11

bekomme Ich benutze Fabric, um eine Schaltfläche "Anmelden mit Twitter" in meiner App hinzuzufügen. Anmeldevorgang funktioniert gut, aber ich weiß nicht, wie (wenn möglich) wie das Profilbild des angemeldeten Benutzers abgerufen werden kann.Wie man Benutzerprofilbild von angemeldetem Benutzer mit Twitter Kit/Fabric in iOS

Gibt es in TWTRSession eine Eigenschaft mit dieser Information (wie userName und userID)? Sah danach, aber ich habe nichts gefunden?

[TWTRLogInButton buttonWithLogInCompletion:^(TWTRSession *session, NSError *error) { 
    // I get user data here... 
    // and need to get user Twitter's profile image 
}]; 

Dank

EDIT

Dank sak Antwort, habe ich herausgefunden, wie es geht.

[TWTRLogInButton buttonWithLogInCompletion:^(TWTRSession *session, NSError *error) { 
    [[[Twitter sharedInstance] APIClient] loadUserWithID:session.userID completion:^(TWTRUser *user, NSError *error) { 
     NSLog(@"User image %@", user.profileImageURL); 
    }]; 
}]; 

Antwort

6

Ich glaube nicht das TWTRSession Objekt des Benutzers Bild hat, aber Sie können die Sitzung verwenden, um ein TWTRUser Objekt anzufordern, und das haben, was Sie brauchen.

+1

Danke, setzen Sie mich in der richtige Weg. Ich werde meine Frage mit der richtigen Antwort bearbeiten. – WedgeSparda

6

So wie es in geschickter zu tun ist, wie folgt:

Twitter.sharedInstance().APIClient.loadUserWithID(session.userID) 
{ 
    (user, error) -> Void in 

    if(user != nil) 
    { 

println(user.profileImageURL) 

    } 
} 

Ich hoffe, das hilft.

+1

Es heißt: Wert des Typs ''Twitter'' hat kein Mitglied'' APIClient'' –

+1

Das hat mir geholfen: http://Stackoverflow.com/a/37255501/3411787 –

2
[[[Twitter sharedInstance] APIClient] loadUserWithID:[session userID] completion:^(TWTRUser *user, NSError *error) { 
     }]; 
6

Try this:

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]; 
+1

Gibt es eine Möglichkeit, Bio mit 'Fabric' zu benutzen ? –

+0

Ja, Sie können Benutzerbiografie mit Ausnahme von Geburtstag und Geschlecht erhalten. – NSPratik

+1

Ich bekomme Profilbild und Namen von TWTRUser. Aber ich konnte keine Eigenschaft zu Bio finden. By Bio Ich meine Beschreibung Benutzer fügt im Profil hinzu –

12

Für diejenigen, die diesen Fehler bekommen:

Value of type 'Twitter' has no member 'APIClient' 

Das half mir,

let twitterClient = TWTRAPIClient(userID: userID) 
twitterClient.loadUserWithID(userID) { (user:TWTRUser?, error:NSError?) in 
    print(user?.profileImageURL) 
} 
1

Hier ist, wie ich userId bekommen, userName, authToken, authTokenSecret und 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); 
      }]; 
     } 
    }]; 

Referenz TWTRAPIClient Class, TWTRUser Class, TWTRSession Class

6

unten Code Versuchen Profil-Bild zu bekommen -

Swift 3

let twitterClient = TWTRAPIClient(userID: session?.userID) 
    twitterClient.loadUser(withID: (session?.userID)!, completion: { (user, error) in 
     print(user!.profileImageURL) 
}) 
+0

Dies ist die richtige Antwort für swift 3 –

Verwandte Themen