Z powodu wycofania Twitter API API 1.0 z 11 czerwca 2013 r. Poniższy skrypt już nie działa.
// Create curl resource
$ch = curl_init();
// Set url
curl_setopt($ch, CURLOPT_URL, "http://twitter.com/statuses/user_timeline/myscreenname.json?count=10");
// Return the transfer as a string
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// $output contains the output string
$output = curl_exec($ch);
// Close curl resource to free up system resources
curl_close($ch);
if ($output)
{
$tweets = json_decode($output,true);
foreach ($tweets as $tweet)
{
print_r($tweet);
}
}
Jak mogę uzyskać linię czasu użytkownika (ostatnie statusy) z możliwie najmniejszym kodem?
Znalazłem to: https://dev.twitter.com/docs/api/1.1/get/statuses/user_timeline, ale pojawia się następujący błąd:
"{"errors":[{"message":"Could not authenticate you","code":32}]}"
Istnieje wiele klas, ale po wypróbowaniu kilku z nich żadna z nich nie działa z powodu tych aktualizacji na Twitterze, a niektóre z nich są dość zaawansowanymi klasami z dużą ilością funkcji, których tak naprawdę nie potrzebuję.
Jaki jest najprostszy / najkrótszy sposób uzyskania najnowszych statusów użytkowników za pomocą PHP?
Odpowiedzi:
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.
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.
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ą:
Jest tu trochę informacji o tym, do czego służą te tokeny.
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ś.
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.
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.
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).
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:
Po skonfigurowaniu tego, co chcesz zrobić z interfejsem API, nadszedł czas, aby złożyć właściwe żądanie.
I w przypadku żądania POST to wszystko!
W przypadku żądania GET jest nieco inaczej. Oto przykład:
Przykładowy kod końcowy : proste zapytanie GET o listę moich obserwujących.
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ódło
php.ini
pliku, a także załadować certyfikaty CA dophp.ini
pliku za pomocącurl.cainfo = path\to\cacert.pem
. Możesz uzyskać certyfikaty CA tutaj .Wejdź na dev.twitter.com i utwórz aplikację . Zapewni to niezbędne poświadczenia. Oto implementacja, którą ostatnio napisałem w PHP i cURL .
Można to uruchomić z wiersza poleceń:
źródło
screen_name
icount
przy takim podejściu? Próbowałem dodać ją do$url
zmiennej, ale wystąpił błąd „Nie można Cię uwierzytelnić”.curl_init()
jednak, że mój kod nie wraca . Przejrzałem kilka przykładów, które wyglądają bardzo prosto i dokładnie i dokładnie tak, jak ten kod tutaj ... Czy muszę zainstalować coś specjalnego?Kod wklejony przez Rivers jest świetny. Wielkie dzięki! Jestem tu nowy i nie mogę komentować, chciałbym tylko odpowiedzieć na pytanie z javiervd (Jak ustawiłbyś screen_name i policzyłeś z tym podejściem?), Ponieważ straciłem dużo czasu, aby to rozgryźć na zewnątrz.
Musisz dodać parametry zarówno do adresu URL, jak i do procesu tworzenia podpisu. Stworzenie podpisu to artykuł, który mi pomógł. Oto mój kod:
źródło
buildAuthorizationHeader
zadziała z funkcją? Zaimplementowałem to osobno.Jak podano w innych odpowiedziach, utwórz aplikację na Twitterze, aby uzyskać token, klucz i sekret. Korzystając z poniższego kodu, możesz modyfikować parametry żądania z jednego miejsca i unikać literówek i podobnych błędów (zmień
$request
tablicę wreturnTweet()
funkcji).a potem po prostu zadzwoń
returnTweet()
źródło
functions.php
pliku w WordPressie, umieściłem<?php echo returnTweet(); ?>
w pliku HTML i wyświetla słowo „Array” i nic więcej.Dziękuję Kris!
Działa dla mnie bez użycia parametrów do zapytania, ilekroć użyłem więcej niż jednego parametru, pokazywał mi błąd: 32 Nie można Cię uwierzytelnić.
Problemem było dla mnie kodowanie ampersand. Więc w twoim kodzie, gdzie jest następujący wiersz
Dodałem następujący wiersz poniżej:
I działało przy użyciu dwóch lub więcej parametrów, takich jak screen_name i count.
Cały kod wygląda następująco:
Mam nadzieję, że pomaga komuś z tym samym problemem, który miałem.
źródło
To pytanie bardzo mi pomogło, ale nie pomogło mi zrozumieć, co musi się wydarzyć. Ten post na blogu wykonał niesamowitą robotę, przeprowadzając mnie przez niego.
Oto ważne bity w jednym miejscu:
Współczuję wszystkim bólom głowy, więc oto kod, aby to podsumować:
źródło
Jeśli masz zainstalowaną bibliotekę OAuth PHP, nie musisz się martwić o samodzielne utworzenie zapytania.
Aby uzyskać więcej informacji, zajrzyj na dokumenty lub ich przykładem . Możesz użyć,
pecl install oauth
aby uzyskać bibliotekę.źródło
Przede wszystkim chciałem podziękować jimbo i ( jego prosta biblioteka post / twitter-api-php).
Jeśli zamierzasz używać interfejsu API wyszukiwania / tweetów GET z biblioteką PHP „twitter-api-php” (TwitterAPIExchange.php):
Najpierw musisz po prostu skomentować obszar kodu „Wykonaj żądanie POST i powtórz odpowiedź”.
Wystarczy użyć kodu „Wykonaj żądanie GET i echo odpowiedzi” i powtórz odpowiedź i zmień te dwa wiersze:
do
(Zmień
screen_name
naq
, to wszystko :)źródło
Musisz stworzyć „aplikację” na Twitterze (i potrzebujesz konta na Twitterze, aby to zrobić).
Następnie musisz użyć OAuth, aby złożyć autoryzowane żądanie na Twitterze .
Możesz użyć zasobu GET statusy / user_timeline, aby uzyskać listę ostatnich tweetów.
źródło
HttpRequest()
funkcji PHP dla kroku 2? Istnieje biblioteka Abrahama TwitterOAuth PHP - github.com/abraham/twitteroauth - biblioteka, która również powinna to robić, ale przykład, jak ją zaimplementować, nie jest tak naprawdę dostępny.Oto krótki sposób pobierania określonej liczby tweetów z osi czasu. Zasadniczo robi to samo co inne przykłady, tylko z mniejszym kodem.
Wystarczy wypełnić klucze i dostosować
$count
do swoich upodobań:Ten używa anonimowych funkcji i
file_get_contents
zamiast biblioteki cURL. Zwróć uwagę na użycie skrótu MD5. Wydaje się, że wszyscy zgadzają się z tymtime()
nonce, jednak większość przykładów w Internecie dotyczących OAuth używa jakiegoś zaszyfrowanego ciągu (jak ten: http://www.sitepoint.com/understanding-oauth-1/ ). To też ma dla mnie większy sens.Dodatkowa uwaga: potrzebujesz PHP 5.3+ do anonimowych funkcji (na wypadek, gdyby Twój serwer / komputer znajdował się w jaskini z czasów zimnej wojny i nie możesz go uaktualnić).
źródło
Z ich generatora podpisów możesz generować
curl
polecenia postaci:źródło
źródło
Dzięki temu wątkowi, a zwłaszcza budidino, ponieważ jego kod był tym, co doprowadziło mnie do domu. Chciałem tylko przyczynić się do odzyskania danych JSON z żądania. Dokonaj zmian w części kodu „// żądanie utworzenia” tablicy kodu, aby wykonać różne żądania. Ostatecznie spowoduje to wyświetlenie JSON na ekranie przeglądarki
źródło
Jeśli jest to przydatne dla każdego ... Na moim blogu zaimplementowałem następujący kod PHP, aby pobrać ostatnie tweety, wyodrębnić ich najbardziej odpowiednie dane, a następnie zapisać je w bazie danych MySQL. Działa, ponieważ mam go na swoim blogu.
Tabela „tweety”, w której je przechowujesz:
get_tweets.php:
Funkcja zapisywania tweetów:
źródło