2012-08-29 21 views
8

Mam problem z pobraniem profilu użytkownika z nowego zestawu SDK serwisu Facebook. Wszystkie odpowiedzi tutaj używają metod ze starego SDK, który już nie działa.Uzyskaj zdjęcie profilowe z Facebooka za pomocą 3.0 SDK

Próbowałem już używać FBProfilePictureView zalecanego w samouczku na Facebooku, ale ten obraz nie jest zapisywany w pamięci podręcznej i nie sądzę, że można go przekonwertować na UIImage.

Czy ktoś może podać pomoc? Dzięki!

Odpowiedz

14

OK, w końcu dostał to za pomocą następujących czynności:

imageData = [[NSMutableData alloc] init]; // the image will be loaded in here 
NSString *urlString = [NSString stringWithFormat:@"http://graph.facebook.com/%@/picture?type=large", user.id]; 
NSMutableURLRequest *urlRequest = 
[NSMutableURLRequest requestWithURL:[NSURL URLWithString:urlString] 
            cachePolicy:NSURLRequestUseProtocolCachePolicy 
           timeoutInterval:2]; 

// Run request asynchronously 
NSURLConnection *urlConnection = [[NSURLConnection alloc] initWithRequest:urlRequest 
                       delegate:self]; 
if (!urlConnection) 
     NSLog(@"Failed to download picture"); 

Następnie użyłem -(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data i -(void)connectionDidFinishLoading:(NSURLConnection *)connection umieścić obraz razem.

+0

Uzyskuję obraz profilu FB poprzez NSURLConnection * urlConnection, ale proszę dać mi znać, jak mogę to zaimplementować na UIImageview – nivritgupta

0

skorzystać z linku:

https://graph.facebook.com/me?fields=picture

dostać zdjęcie z profilu bieżącego użytkownika.

Facebook zapewnia Graph API explorer tool, który może się przydać, gdy chcesz wypróbować zapytania lub sprawdzić zwrócone dane wyjściowe.

Oto link do User API Reference.

+1

Jak przejść z tego linku, aby uzyskać go w pamięci podręcznej w mojej aplikacji? – bmueller

1

Do buforowania obrazu należy użyć https://github.com/rs/SDWebImage. URL żądania obraz powinien być

NSString *string = [NSString stringWithFormat:@"https://graph.facebook.com/%@?fields=picture", userid]; 
+0

Po zmianie adresu URL na: 'NSString * string = [NSString stringWithFormat: @" https: // graph .facebook.com /% @/picture ", userid];' – smek

0

Jeśli problem jest związany z "self.userPofilePicture.profileID = user.id;".

Następnie self.userProfileZdjęcie zwraca UIView, więc po prostu weź View i wyświetlić w nim.

Nie zapomnij dodać klasy FBProfilePictureView w Inspektorze tożsamości, a także [klasy FBProfilePictureView] do pliku implementacji AppDelegate.

Mam nadzieję, że będzie to pomocne.

+0

Myślę, że to ma być używane w połączeniu z FBLoginView –

9

Najlepsze rozwiązanie, jakie znalazłem: Użyłem UIImage z AFNetworking https://github.com/AFNetworking/AFNetworking. Obsługuje przekierowania i buforowanie, dzięki czemu można pobrać obraz profilu dla każdego identyfikatora użytkownika, który posiadasz.

NSString *imageUrl = [NSString stringWithFormat:@"http://graph.facebook.com/%@/picture", ((NSDictionary<FBGraphUser> *) [self.friends objectAtIndex: indexPath.row]).id]; 
[friendCell.imageView setImageWithURL:[NSURL URLWithString:imageUrl] placeholderImage:[UIImage imageNamed:@"profile.jpg"]]; 
+2

+1 dla tego. AFNetworking uczynił go 10x łatwiejszym –

+0

czym jest self.friends? –

+0

Tablica użytkowników fb – trickster77777

Powiązane problemy