Karena pensiunnya Twitter API 1.0 pada 11 Juni 2013 , skrip di bawah ini tidak berfungsi lagi.
// 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);
}
}
Bagaimana saya bisa mendapatkan user_timeline (status terkini) dengan kode seminimal mungkin?
Saya menemukan ini: https://dev.twitter.com/docs/api/1.1/get/statuses/user_timeline tetapi saya mendapatkan kesalahan berikut:
"{"errors":[{"message":"Could not authenticate you","code":32}]}"
Ada banyak kelas di luar sana tetapi setelah mencoba beberapa dari mereka tampaknya tidak berhasil karena pembaruan ini di Twitter, ditambah beberapa dari mereka adalah kelas yang cukup canggih dengan banyak fungsi yang saya tidak benar-benar butuhkan.
Apa cara paling sederhana / terpendek untuk mendapatkan status pengguna terkini dengan PHP?
Jawaban:
Jadi Anda ingin menggunakan Twitter v1.1 API?
Catatan: file-file ini ada di GitHub .
Versi 1.0 akan segera ditinggalkan dan permintaan tidak sah tidak akan diizinkan. Jadi, inilah sebuah pos untuk membantu Anda melakukan hal itu, bersama dengan kelas PHP untuk membuat hidup Anda lebih mudah.
Anda perlu mengunjungi situs pengembang Twitter resmi dan mendaftar untuk akun pengembang. Ini adalah langkah gratis dan perlu untuk membuat permintaan untuk API v1.1.
Apa? Anda pikir Anda bisa membuat permintaan yang tidak diautentikasi? Tidak dengan API v1.1 Twitter. Anda perlu mengunjungi http://dev.twitter.com/apps dan klik tombol "Buat Aplikasi".
Di halaman ini, isi detail apa pun yang Anda inginkan. Bagi saya, itu tidak masalah, karena saya hanya ingin membuat banyak permintaan blokir untuk menyingkirkan pengikut spam. Intinya adalah Anda akan mendapatkan satu set kunci unik untuk digunakan untuk aplikasi Anda.
Jadi, tujuan membuat aplikasi adalah memberi diri Anda (dan Twitter) satu set kunci. Ini adalah:
Ada sedikit informasi di sini tentang tujuan token ini.
OAuth meminta beberapa token. Jadi, Anda harus membuatnya untuk Anda.
Klik "buat token akses saya" di bagian bawah. Kemudian setelah Anda gulir ke bawah lagi, Anda akan memiliki beberapa kunci yang baru dibuat. Anda perlu mengambil empat kunci yang sebelumnya berlabel dari halaman ini untuk panggilan API Anda, jadi buat catatan di suatu tempat.
Jika Anda ingin menggunakan API ini dengan layak, Anda harus mengubah pengaturan menjadi Baca & Tulis jika Anda melakukan hal lain selain pengambilan data standar menggunakan permintaan GET .
Pilih tab "Pengaturan" di dekat bagian atas halaman.
Berikan akses baca / tulis aplikasi Anda, dan tekan "Perbarui" di bagian bawah.
Anda dapat membaca lebih lanjut tentang model izin aplikasi yang digunakan Twitter di sini.
Saya menggabungkan kode di atas, dengan beberapa modifikasi dan perubahan, ke dalam kelas PHP sehingga sangat mudah untuk membuat permintaan yang Anda butuhkan.
Ini menggunakan OAuth dan Twitter v1.1 API , dan kelas yang saya buat yang dapat Anda temukan di bawah.
Pastikan Anda memasukkan kunci yang Anda dapatkan dari aplikasi di atas di ruang masing-masing.
Selanjutnya Anda harus memilih URL yang ingin Anda minta. Twitter memiliki dokumentasi API mereka untuk membantu Anda memilih URL mana dan juga tipe permintaan (POST atau GET).
Dalam dokumentasi, setiap URL menyatakan apa yang dapat Anda sampaikan. Jika kami menggunakan URL "blokir" seperti yang di atas, saya dapat meneruskan parameter POST berikut:
Sekarang setelah Anda mengatur apa yang ingin Anda lakukan dengan API, saatnya untuk membuat permintaan yang sebenarnya.
Dan untuk permintaan POST , itu dia!
Untuk permintaan GET , ini sedikit berbeda. Ini sebuah contoh:
Contoh kode akhir : Untuk permintaan GET sederhana untuk daftar pengikut saya.
Saya telah meletakkan file-file ini di GitHub dengan kredit ke @ lackovic10 dan @rivers! Saya harap seseorang menemukan itu berguna; Saya tahu saya lakukan (saya menggunakannya untuk pemblokiran massal dalam satu lingkaran).
sumber
php.ini
file Anda dan juga perlu memuat sertifikat CA dalamphp.ini
file Anda menggunakancurl.cainfo = path\to\cacert.pem
. Anda bisa mendapatkan sertifikat CA di sini .Pergi ke dev.twitter.com dan buat aplikasi . Ini akan memberi Anda kredensial yang Anda butuhkan. Ini adalah implementasi yang baru-baru ini saya tulis dengan PHP dan cURL .
Ini dapat dijalankan dari baris perintah:
sumber
screen_name
dancount
dengan pendekatan ini? Saya mencoba menambahkannya ke$url
variabel tetapi saya mendapat kesalahan "Tidak dapat mengotentikasi Anda".curl_init()
. Saya telah melihat beberapa contoh dan mereka terlihat sangat sederhana dan langsung dan persis seperti kode ini di sini ... Apakah saya perlu menginstal sesuatu yang istimewa?Kode yang disisipkan oleh Rivers itu hebat. Terima kasih banyak! Saya baru di sini dan tidak dapat berkomentar, saya hanya ingin menjawab pertanyaan dari javiervd (Bagaimana Anda mengatur screen_name dan menghitung dengan pendekatan ini?), Karena saya telah kehilangan banyak waktu untuk memikirkannya di luar.
Anda perlu menambahkan parameter ke URL dan ke proses pembuatan tanda tangan. Membuat tanda tangan adalah artikel yang membantu saya. Ini kode saya:
sumber
buildAuthorizationHeader
fungsi? Saya menerapkannya secara terpisah.Seperti yang dinyatakan dalam jawaban lain, buat aplikasi Twitter untuk mendapatkan token, kunci, dan rahasia. Dengan menggunakan kode di bawah ini, Anda dapat memodifikasi parameter permintaan dari satu tempat dan menghindari kesalahan ketik dan kesalahan serupa (ubah fungsi
$request
arrayreturnTweet()
).dan kemudian panggil saja
returnTweet()
sumber
functions.php
file saya di WordPress, memasukkan<?php echo returnTweet(); ?>
file HTML, dan menghasilkan kata "Array" dan tidak ada yang lain.Kris terima kasih!
Ini berhasil bagi saya tanpa menggunakan parameter ke kueri, setiap kali saya menggunakan lebih dari satu parameter itu menunjukkan kesalahan: 32 Tidak dapat mengautentikasi Anda.
Masalahnya bagi saya, berada di ampersand encoding. Jadi dalam kode Anda di mana itu adalah baris berikut
Saya menambahkan baris berikut di bawah ini:
Dan itu berhasil menggunakan dua atau lebih parameter seperti screen_name dan count.
Seluruh kode terlihat seperti ini:
Semoga ini bisa membantu seseorang dengan masalah yang sama dengan saya.
sumber
Pertanyaan ini banyak membantu saya tetapi tidak membuat saya mengerti apa yang harus terjadi. Posting blog ini melakukan pekerjaan yang luar biasa untuk memandu saya.
Berikut adalah bit-bit penting di satu tempat:
Saya bersimpati dengan semua sakit kepala, jadi inilah beberapa kode untuk menyelesaikan semuanya:
sumber
Jika Anda memiliki perpustakaan PHP OAuth diinstal, Anda tidak perlu khawatir tentang membentuk permintaan sendiri.
Untuk informasi lebih lanjut, lihat Dokumen atau contohnya . Anda dapat menggunakan
pecl install oauth
untuk mendapatkan perpustakaan.sumber
Pertama-tama saya ingin mengucapkan terima kasih kepada jimbo dan ( postingnya / twitter-api-php perpustakaan sederhana).
Jika Anda akan menggunakan API GET search / tweets dengan perpustakaan PHP "twitter-api-php" (TwitterAPIExchange.php):
Pertama, Anda hanya perlu berkomentar "Lakukan permintaan POST dan gema area respons".
Cukup gunakan kode "Lakukan permintaan GET dan gema respons" dan gema respons dan ubah dua baris ini:
untuk
(Ubah
screen_name
keq
, itu saja :)sumber
Anda perlu membuat "aplikasi" di Twitter (dan Anda memerlukan akun Twitter untuk melakukan ini).
Kemudian, Anda perlu menggunakan OAuth untuk membuat permintaan resmi ke Twitter .
Anda dapat menggunakan sumber daya GET status / user_timeline untuk mendapatkan daftar tweet terbaru.
sumber
HttpRequest()
fungsi PHP untuk langkah 2? Ada PHP TwitterOAuth Abraham - github.com/abraham/twitteroauth - perpustakaan yang seharusnya melakukan ini juga, tetapi sebuah contoh bagaimana mengimplementasikannya tidak benar-benar disediakan.Inilah yang singkat untuk mendapatkan sejumlah tweet dari timeline Anda. Ini pada dasarnya melakukan hal yang sama dengan contoh lainnya, hanya dengan kode yang lebih sedikit.
Cukup isi tombol dan sesuaikan
$count
dengan keinginan Anda:Yang ini menggunakan fungsi anonim dan
file_get_contents
bukan perpustakaan CURL. Perhatikan penggunaan notce MD5 hashed. Semua orang tampaknyatime()
setuju dengan nonce, namun, sebagian besar contoh di web tentang OAuth menggunakan semacam string terenkripsi (seperti ini: http://www.sitepoint.com/understanding-oauth-1/ ). Ini juga lebih masuk akal bagi saya.Catatan lebih lanjut: Anda memerlukan PHP 5.3+ untuk fungsi anonim (seandainya server / komputer Anda ada dalam gua perang dingin dan Anda tidak dapat memutakhirkannya).
sumber
Dari generator tanda tangan mereka , Anda dapat membuat
curl
perintah dari formulir:sumber
sumber
Berkat utas ini, dan terutama budidino karena kodenya yang mengantarnya pulang untuk saya. Hanya ingin berkontribusi bagaimana cara mengambil data JSON dari permintaan. Buat perubahan pada bagian "// buat permintaan" larik kode untuk melakukan permintaan yang berbeda. Pada akhirnya, ini akan menampilkan JSON ke layar browser
sumber
Jika ini berguna bagi siapa pun ... Di blog saya, saya telah menerapkan kode PHP berikut untuk mengambil tweet terakhir, mengekstrak data mereka yang paling relevan dan kemudian menyimpannya ke dalam database MySQL. Ini berhasil karena saya mendapatkannya di blog saya.
Tabel "tweet" tempat menyimpannya:
get_tweets.php:
Fungsi untuk menyimpan tweet:
sumber