Usiłuję uzyskać nazwę mojego znajomego i identyfikatory za pomocą Graph API v2.0, ale dane są puste:
{
"data": [
]
}
Kiedy korzystałem z wersji 1.0, wszystko było w porządku z następującym żądaniem:
FBRequest* friendsRequest = [FBRequest requestForMyFriends];
[friendsRequest startWithCompletionHandler: ^(FBRequestConnection *connection,
NSDictionary* result,
NSError *error) {
NSArray* friends = [result objectForKey:@"data"];
NSLog(@"Found: %i friends", friends.count);
for (NSDictionary<FBGraphUser>* friend in friends) {
NSLog(@"I have a friend named %@ with id %@", friend.name, friend.id);
}
}];
Ale teraz nie mogę znaleźć przyjaciół!
Odpowiedzi:
W wersji 2.0 Graph API wywoływanie
/me/friends
zwraca znajomych osoby, która również korzysta z aplikacji.Ponadto w wersji 2.0 należy poprosić o
user_friends
pozwolenie każdego użytkownika.user_friends
nie jest już domyślnie uwzględniany przy każdym logowaniu. Każdy użytkownik musi udzielićuser_friends
pozwolenia, aby pojawić się w odpowiedzi na adres/me/friends
. Aby uzyskać bardziej szczegółowe informacje, zapoznaj się z przewodnikiem aktualizacji na Facebooku lub przejrzyj podsumowanie poniżej.Jeśli chcesz uzyskać dostęp do listy znajomych nieużywających aplikacji, dostępne są dwie opcje:
Jeśli chcesz, aby Twoi ludzie oznaczali znajomych swoimi historiami, które publikują na Facebooku za pomocą Twojej aplikacji, możesz użyć
/me/taggable_friends
interfejsu API. Korzystanie z tego punktu końcowego wymaga przeglądu przez Facebooka i powinno być stosowane tylko w przypadku, gdy renderujesz listę znajomych, aby umożliwić użytkownikowi oznaczenie ich w poście.Jeśli Twoja aplikacja jest grą ORAZ Twoja gra obsługuje Facebook Canvas , możesz użyć
/me/invitable_friends
punktu końcowego, aby wyświetlić niestandardowe okno dialogowe zaproszenia , a następnie przekaż tokeny zwrócone przez ten interfejs API do standardowego okna dialogowego Żądania.W innych przypadkach aplikacje nie są już w stanie odzyskać pełnej listy przyjaciół użytkownika (tylko ci znajomi, którzy specjalnie autoryzowali twoją aplikację za pomocą
user_friends
pozwolenia). Zostało to potwierdzone przez Facebooka jako „zgodnie z projektem”.W przypadku aplikacji, które chcą umożliwić znajomym zapraszanie znajomych do korzystania z aplikacji, możesz nadal korzystać z okna dialogowego Wyślij w sieci Web lub nowego okna dialogowego wiadomości w systemie iOS i Android .
AKTUALIZACJA: Facebook opublikował FAQ na temat tych zmian tutaj: https://developers.facebook.com/docs/apps/faq, które wyjaśniają wszystkie opcje dostępne dla programistów w celu zaproszenia znajomych itp.
źródło
taggable_friends
elementów w celu przesłania recenzji.taggable_friends
Teraz nic nie zwraca. Przed uzyskaniemuser_friends
pozwolenia wymagana jest weryfikacja logowania .Mimo że odpowiedź Simona Crossa została zaakceptowana i poprawna, pomyślałem, że wzmocnię ją nieco przykładem (Androida) tego, co należy zrobić. Utrzymam to tak ogólne, jak to możliwe i skupię się tylko na pytaniu. Osobiście zakończyłem przechowywanie rzeczy w bazie danych, aby ładowanie przebiegało płynnie, ale wymaga to CursorAdapter i ContentProvider, który jest nieco poza zakresem.
Sam tu przyszedłem, a potem pomyślałem, co teraz ?!
Problem
Podobnie jak user3594351 , zauważyłem, że dane znajomego są puste. Dowiedziałem się tego za pomocą FriendPickerFragment. To, co działało trzy miesiące temu, już nie działa. Zepsuły się nawet przykłady na Facebooku. Więc mój problem brzmiał: „Jak ręcznie utworzyć FriendPickerFragment?
Co nie działa
Opcja nr 1 z Simon Cross nie była wystarczająco silna, aby zaprosić znajomych do aplikacji. Simon Cross zalecił także okno dialogowe Żądania, ale pozwoliłoby to na przyjęcie tylko pięciu żądań na raz. Okno dialogowe żądań pokazywało również tych samych znajomych podczas każdej sesji zalogowania na Facebooku. Nieprzydatne.
Co działało (Podsumowanie)
Opcja nr 2 przy odrobinie ciężkiej pracy. Musisz upewnić się, że spełniasz nowe zasady Facebooka: 1.) Jesteś grą 2.) Masz aplikację Canvas (Obecność w sieci) 3.) Twoja aplikacja jest zarejestrowana na Facebooku. Wszystko to odbywa się na stronie programisty Facebooka w Ustawieniach .
Aby ręcznie emulować próbnik wyboru znajomych w mojej aplikacji, wykonałem następujące czynności:
Detale
The AsynchTask
Stworzyłem klasę FacebookFriend
źródło
Facebook zmienił teraz swoje zasady. Tak czy inaczej, nie możesz uzyskać całej listy znajomych, jeśli twoja aplikacja nie ma implementacji Canvas i jeśli nie jest to gra. Oczywiście są też taggable_friends, ale ten służy wyłącznie do tagowania.
Będziesz mógł wyciągnąć listę przyjaciół, którzy autoryzowali tylko aplikację.
Aplikacje korzystające z Graph API 1.0 będą działać do 30 kwietnia 2015 r., A następnie będą przestarzałe.
Zobacz następujące informacje, aby uzyskać więcej informacji na ten temat:
Znajomi użytkownika
Często zadawane pytania dotyczące tworzenia aplikacji na Facebooku
źródło
W Swift 4.2 i Xcode 10.1:
Jeśli chcesz pobrać listę znajomych z Facebooka, musisz przesłać swoją aplikację do sprawdzenia na Facebooku. Zobacz niektóre uprawnienia do logowania:
Uprawnienia do logowania
Oto dwa kroki:
1) Najpierw musisz mieć status aplikacji na żywo
2) Uzyskaj wymagane uprawnienia z Facebooka.
1) Włącz status naszej aplikacji na żywo:
Przejdź do strony aplikacji i wybierz aplikację
https://developers.facebook.com/apps/
Wybierz status w prawym górnym rogu pulpitu nawigacyjnego .
Prześlij adres URL polityki prywatności
Wybierz kategorię
Teraz nasza aplikacja ma status Live .
Jeden krok został zakończony.
2) Prześlij naszą aplikację do sprawdzenia:
Najpierw wyślij wymagane wnioski.
Przykład: user_friends, user_videos, user_posts itp.
Po drugie, przejdź do strony Bieżące żądanie
Przykład: user_events
Prześlij wszystkie szczegóły
Podobnie jak to w przypadku wszystkich żądań (user_friends, user_events, user_videos, user_posts itp.).
Na koniec prześlij swoją aplikację do sprawdzenia.
Jeśli Twoja opinia zostanie zaakceptowana ze strony Facebooka, możesz teraz czytać kontakty itp.
źródło
user_friends
Uprawnienie jest bardzo ograniczona. Z dokumentacji Facebooka (kwiecień 2019 r.): [To tylko] przyznaje aplikacji zezwolenie na dostęp do listy znajomych, którzy również korzystają z tej aplikacji. Zezwolenie jest ograniczone do ograniczonego zestawu partnerów, a korzystanie z niego wymaga uprzedniej zgody Facebooka. Aby osoba mogła pojawić się na liście znajomych innej osoby, obie osoby muszą udostępnić swoją listę znajomych aplikacji i nie mogą wyłączać tego uprawnienia podczas logowania.Jak wspomniał Simon, nie jest to możliwe w nowym interfejsie API Facebooka. Z technicznego punktu widzenia można to zrobić za pomocą automatyzacji przeglądarki.
Przykładowa implementacja za pomocą WatiN :
Prototyp z implementacją tego podejścia (przy użyciu C # / WatiN) patrz https://github.com/svejdo1/ShadowApi . Umożliwia także dynamiczną aktualizację łącznika Facebooka, który pobiera listę twoich kontaktów.
źródło
Spróbuj
/me/taggable_friends?limit=5000
użyć kodu JavaScriptLub
wypróbuj Graph API :
https://graph.facebook.com/v2.3/user_id_here/taggable_friends?access_token=
źródło
W API SDK v2.0 Facebook Graph lub powyżej, należy zwrócić się do user_friends pozwolenie od każdego użytkownika w momencie Facebook login od user_friends nie jest już włączone domyślnie w każdym logowaniu; musimy to dodać.
Każdy użytkownik musi udzielić user_friends pozwolenie w celu umieszczenia w odpowiedzi na / Me / przyjaciół .
W momencie logowania na Facebooku wyświetla się monit z ekranem zawierającym wszystkie uprawnienia:
Jeśli użytkownik naciśnie przycisk Kontynuuj , uprawnienia zostaną ustawione. Gdy uzyskasz dostęp do listy znajomych za pomocą Graph API, wyświetlą się Twoi znajomi, którzy zalogowali się do aplikacji jak wyżej
Dane wyjściowe będą zawierać użytkowników, którzy udzielili uprawnienia użytkownik_znajomi w momencie logowania do aplikacji za pośrednictwem Facebooka.
źródło