Ważna uwaga: od połowy 2018 r. Proces uzyskiwania twitterowych tokenów API stał się znacznie bardziej biurokratyczny. Dostarczenie zestawu tokenów API zajęło mi ponad tydzień roboczy. Dotyczy to projektu open source dla was, chłopaki i dziewczynki, z ponad 1,2 milionem instalacji na Packagist i 1,6 tysiącami gwiazd na Github, co teoretycznie powinno mieć wyższy priorytet .
Jeśli masz za zadanie pracować z twitterowym interfejsem API w swojej pracy, musisz wziąć pod uwagę ten potencjalnie wyjątkowo długi czas oczekiwania. Weź również pod uwagę inne możliwości mediów społecznościowych, takie jak Facebook czy Instagram, i podaj te opcje, ponieważ proces odzyskiwania ich tokenów jest natychmiastowy.
Więc chcesz użyć interfejsu API Twitter v1.1?
Uwaga: pliki dla nich znajdują się na GitHub .
Wersja 1.0 zostanie wkrótce uznana za przestarzałą i nie będą akceptowane nieautoryzowane żądania. Oto post, który pomoże Ci to zrobić, wraz z klasą PHP, która ułatwi ci życie.
1. Utwórz konto programisty: skonfiguruj konto dewelopera na Twitterze
Musisz odwiedzić oficjalną stronę programisty Twittera i zarejestrować konto programisty. To jest darmowy i niezbędny krok do zgłaszania żądań interfejsu API wersji 1.1.
2. Utwórz aplikację: Utwórz aplikację na stronie programisty Twitter
Co? Myślałeś, że możesz wysyłać nieuwierzytelnione wnioski? Nie z interfejsem API wersji 1.1 Twittera. Musisz odwiedzić http://dev.twitter.com/apps i kliknąć przycisk „Utwórz aplikację”.
Na tej stronie wpisz dowolne szczegóły. Dla mnie to nie miało znaczenia, ponieważ chciałem po prostu załadować wiele bloków, aby pozbyć się obserwujących spam. Chodzi o to, że zdobędziesz siebie zestaw unikalnych kluczy do użycia w swojej aplikacji.
Tak więc celem stworzenia aplikacji jest przekazanie sobie (i Twitterowi) zestawu kluczy. To są:
- Klucz klienta
- Tajemnica konsumencka
- Token dostępu
- Sekret tokena dostępu
Jest tu trochę informacji o tym, do czego służą te tokeny.
3. Utwórz tokeny dostępu : Będziesz ich potrzebować, aby pomyślnie wysyłać żądania
OAuth prosi o kilka tokenów. Musisz więc je wygenerować.
Kliknij „utwórz mój token dostępu” u dołu. Następnie po ponownym przewinięciu w dół będziesz mieć kilka nowo wygenerowanych kluczy. Musisz pobrać cztery wcześniej oznaczone klawisze z tej strony do wywołań API, więc zanotuj je gdzieś.
4. Zmień poziom dostępu : nie chcesz tylko do odczytu, prawda?
Jeśli chcesz w jakikolwiek sposób korzystać z tego interfejsu API, musisz zmienić ustawienia na Odczyt i zapis, jeśli robisz coś innego niż standardowe pobieranie danych przy użyciu żądań GET .
Wybierz kartę „Ustawienia” u góry strony.
Daj swojej aplikacji dostęp do odczytu / zapisu i kliknij „Aktualizuj” na dole.
Możesz przeczytać więcej na temat modelu uprawnień aplikacji , która korzysta z Twittera tutaj.
5. Napisz kod, aby uzyskać dostęp do API : Zrobiłem większość dla Ciebie
Połączyłem powyższy kod, z pewnymi modyfikacjami i zmianami, w klasę PHP, więc bardzo łatwo jest wykonać żądane żądania.
Korzysta z OAuth i interfejsu API Twittera 1.1 , a także utworzonej przeze mnie klasy, którą można znaleźć poniżej.
require_once('TwitterAPIExchange.php');
/** Set access tokens here - see: https://dev.twitter.com/apps/ **/
$settings = array(
'oauth_access_token' => "YOUR_OAUTH_ACCESS_TOKEN",
'oauth_access_token_secret' => "YOUR_OAUTH_ACCESS_TOKEN_SECRET",
'consumer_key' => "YOUR_CONSUMER_KEY",
'consumer_secret' => "YOUR_CONSUMER_SECRET"
);
Upewnij się, że umieściłeś klucze otrzymane z aplikacji powyżej w odpowiednich miejscach.
Następnie musisz wybrać adres URL, na który chcesz wysłać zapytanie. Twitter ma dokumentację API, która pomaga wybrać adres URL, a także typ żądania (POST lub GET).
/** URL for REST request, see: https://dev.twitter.com/docs/api/1.1/ **/
$url = 'https://api.twitter.com/1.1/blocks/create.json';
$requestMethod = 'POST';
W dokumentacji każdy adres URL określa, co możesz mu przekazać. Jeśli używamy adresu URL „bloków”, takiego jak powyższy, mogę przekazać następujące parametry POST:
/** POST fields required by the URL above. See relevant docs as above **/
$postfields = array(
'screen_name' => 'usernameToBlock',
'skip_status' => '1'
);
Po skonfigurowaniu tego, co chcesz zrobić z interfejsem API, nadszedł czas, aby złożyć właściwe żądanie.
/** Perform the request and echo the response **/
$twitter = new TwitterAPIExchange($settings);
echo $twitter->buildOauth($url, $requestMethod)
->setPostfields($postfields)
->performRequest();
I w przypadku żądania POST to wszystko!
W przypadku żądania GET jest nieco inaczej. Oto przykład:
/** Note: Set the GET field BEFORE calling buildOauth(); **/
$url = 'https://api.twitter.com/1.1/followers/ids.json';
$getfield = '?username=J7mbo';
$requestMethod = 'GET';
$twitter = new TwitterAPIExchange($settings);
echo $twitter->setGetfield($getfield)
->buildOauth($url, $requestMethod)
->performRequest();
Przykładowy kod końcowy : proste zapytanie GET o listę moich obserwujących.
$url = 'https://api.twitter.com/1.1/followers/list.json';
$getfield = '?username=J7mbo&skip_status=1';
$requestMethod = 'GET';
$twitter = new TwitterAPIExchange($settings);
echo $twitter->setGetfield($getfield)
->buildOauth($url, $requestMethod)
->performRequest();
Umieściłem te pliki na GitHub z podziękowaniem dla @ missingovic10 i @rivers! Mam nadzieję, że ktoś uzna to za przydatne; Wiem, że tak (użyłem go do masowego blokowania w pętli).
Również dla osób w systemie Windows, które mają problemy z certyfikatami SSL, spójrz na ten post . Ta biblioteka używa cURL pod maską, więc musisz upewnić się, że prawdopodobnie masz skonfigurowane certyfikaty cURL. Google jest także twoim przyjacielem.