Advertisement
  1. Code
  2. Twitter API

Menbangun dengan Twitter API: persiapan

Scroll to top
Read Time: 11 min
This post is part of a series called Building With the Twitter API.
Building With the Twitter API: OAuth, Reading and Posting

Indonesian (Bahasa Indonesia) translation by Arief Syahrir (you can also view the original English article)

Final product imageFinal product imageFinal product image
What You'll Be Creating

Memulai dengan Twitter API mungkin tampak sedikit rumit, tetapi sebenarnya cukup mudah. Ada beberapa perpustakaan untuk umum bahasa yang membuat proses menjadi cukup mudah. Dokumentasi API Twitter juga telah meningkat pesat dari waktu ke waktu.

Di Maret 2013, Twitter mulai memerlukan OAuth untuk semua API sesi, dan itu menyebabkan perbaikan untuk pengguna dan pengembang semuanya. Platform dikonfirmasi aman OAuth's telah membantu Twitter melindungi privasi pengguna sementara meningkatkan tracking; ini pada gilirannya memungkinkan perusahaan untuk meningkatkan batas untuk pengembang pada individu API call.

Seri ini terdiri dari tiga bagian. Bagian satu akan mencakup:

  • Pengenalan Twitter API
  • Menbangun skema database untuk Twitter
  • membangun aplikasi PHP dalam Yii Framework untuk bekerja dengan Twitter

Birdcage, Aplikasi basic Yii Twitter yang digunakan dalam tutorial ini, tersedia untuk Anda melalui open source. Jika Anda ingin mempelajari lebih lanjut tentang Yii, coba lihat pengenalan Yii Framework.

Bagian kedua dari seri ini akan mencakup:

  • otentikasi dengan Twitter melalui OAuth
  • mengolah tweets yang masuk di latar belakang menggunakan REST API
  • posting tweets

Bagian tiga akan mencakup penggunaan real time Twitter Streaming API dan open source Phirehose streaming implementasi. Sementara bagian dua proses tweets menggunakan REST API, Bagian tiga akan menjelaskan bagaimana membangun always-on sambungan dengan Twitter data strem. Ini mungkin topik baru untuk banyak pengembang PHP.

Pengenalan Twitter API

Untuk sebagian besar, seri ini tutorial akan fokus pada tiga bagian dari platform Twitter:

  1. OAuth otentikasi
  2. REST API
  3. Streaming API

Anda dapat membaca dokumentasi Twitter API di sini.

OAuth otentikasi

Pada versi 1.1, Twitter API sekarang memerlukan otentikasi OAuth, otentikasi hanya-aplikasi atau otentikasi pengguna aplikasi. Yang terakhir ini mengharuskan pengguna Twitter Anda untuk mengklik ke twiiter website, sign in dengan kredensial mereka, dan kemudian kembali ke situs Anda. Otentikasi pengguna aplikasi diperlukan untuk banyak pemanggilan API pengguna tertentu.

Dengan kata lain, ketika Anda mulai untuk mengakses Twitter API atas nama pengguna, pengguna akan diarahkan ke twitter untuk mengotorisasi aplikasi Anda. Twitter akan mengembalikan Token yang tidak akan expired sampai pengguna mencabut mereka. Anda akan menggunakan token ini untuk mengotentikasi panggilan Anda atas nama pengguna ini.

REST API

Cara yang paling umum untuk mengakses Twitter data adalah melalui REST API. Menggunakan ttoken yang aman yang diperoleh melalui OAuth, aplikasi Anda membuat permintaan ke Twitter untuk data tertentu, misalnya home timeline atau status mereka sendiri, atau permintaan untuk post tweet untuk pengguna tertentu.

Using the REST API with TwitterUsing the REST API with TwitterUsing the REST API with Twitter

REST API harus memenuhi kebutuhan sebagian programmer aplikasi Twitter.

Streaming API

Twitter Streaming API memungkinkan Anda untuk menerima tweets dan pemberitahuan dalam real time dari Twitter. Namun, hal ini membutuhkan kinerja tinggi, persisten always on antara server dan Twitter.

Untungnya, ada sebuah perpustakaan bagus open source yang disebut Phirehose oleh Fenn Bailey yang mengimplementasikan sebagian besar Twitter streaming Persyaratan API. Kita akan meninjau bagaimana mengatur Phirehose dan beradaptasi dengan aplikasi Anda di bagian tiga dari tutorial ini.

Ada tiga variasi dari Twitter Streaming API:

  1. Public Stream. Hal ini memungkinkan aplikasi Anda untuk memantau data publik pada Twitter, seperti tweets publik, hashtag filter, dll.
  2. User stream. Hal ini memungkinkan Anda untuk melacak pengguna tweet stream secara real time. Bagian tiga dari tutorial ini akan berfokus pada user stream.
  3. Situs Stream (memerlukan persetujuan dari Twitter). Site Stream memungkinkan aplikasi untuk memonitor real-time Twitter feed untuk sejumlah besar pengguna.

Pekerjaan implementasi streaming Anda adalah untuk log event masuk secepat mungkin dan proses mereka di latar belakang menggunakan REST API yang diperlukan untuk panen data yang lebih dalam. Twotter kadang-kadang memanggil ini mengumpulkan data yang lebih mendalam tentang event-event yang "hydrating".

Penggunaan REST API diatur oleh berbagai rate limit Twitter. Hal ini penting untuk menjadi pengguna bertanggung jawab Twitter 's API dengan limit plan untuk aktivitas Anda dalam aplikasi Anda dan pengawasan API rate limit response. Streaming API tidak memiliki batas limit data didorong ke server Anda.

Membangun skema Database untuk Twitter API

Sementara Twitter dari kejauhan tampak sederhana, itu adalah benar-benar sangat mendalam dan kompleks stream data termasuk selalu tumbuh timeline, hubungan antara pengguna, mention, notifikasi, favorit, daftar, geolocation, multimedia, tempat, et al.

Sebagai pengembang, Anda harus memutuskan mana data in yangi paling penting untuk aplikasi Anda untuk menyimpan dalam database Anda sendiri. Pendekatan minimalis dapat melayani Anda dengan baik. Twitter API cukup fleksibel bahwa Anda dapat selalu kembali dan memperluas (atau hidrat) data yang terkait dengan event-event yang Anda simpan.

Birdcage adalah gratis, open source, berbasis Yii aplikasi yang mengimplementasikan framework Twitter API untuk tujuan dari tutorial ini. Jika Anda tidak akrab dengan Yii, silakan baca pengantar ke Yii Framework. Bahkan jika Anda tidak terbiasa dengan Yii, segmen kode PHP individu dalam tutorial ini harus cukup mudah untuk mengikuti.

Jika Anda ingin melihat sebuah implementasi Twitter API di dasar PHP, check out Adam Greene 140Dev. Dia telah melakukan pekerjaan yang besar yang menyediakan platform dasar untuk akses Twitter API. Bukunya Twitter API keterlibatan pemrograman memiliki kreatif mengambil menggunakan Twitter API untuk organik membangun pengaruh Anda di Twitter.

Salah satu manfaat dari Birdcage dan kode Yii Framework adalah bahwa kita dapat menggunakan Yii's scaffolding komponen, Gii untuk menghasilkan antarmuka berbasis web untuk aplikasi dasar dalam waktu menit — sesuatu yang Anda tidak bisa melakukannya di basic PHP.

Sebagai sebuah aplikasi Yii, Birdcase menggunakan migrasi database ActiveRecord untuk membangun database-nya. Migrasi database membuatnya mungkin untuk pemrograman membangun dan memperluas skema kami. Hal ini terutama berguna jika Anda menerapkan konsumsi minimalis Twitter API dan kemudian memilih untuk memperluas apa yang Anda kumpulkan.

Saya akan memandu Anda melalui beberapa contoh membangun skema database dalam Yii dan kekuatan yang berbasis web-based scaffolding konstruktor, Gii.

Jika Anda ingin mencoba kode Birdcage pada Anda sendiri, silahkan kunjungi situs saya untuk berjalan-melalui petunjuk instalasi lengkap.

Pertama, kami akan membuat tabel account untuk menyimpan token OAuth dan secret dari Twitter untuk kita ingin login untuk account. Account yang terhubung ke pengguna terdaftar dalam tabel user internal user_id kami.

Dari command line, kami akan memberitahukan Yii untuk membuat tabel baru migrasi untuk account Twitter: ./app/protected/yiic bermigrasi create create_account_table.

Kami akan menyelesaikan migrasi secara manual seperti ini:

1
<?php
2
3
class m140911_212834_create_account_table extends CDbMigration
4
{
5
   protected $MySqlOptions = 'ENGINE=InnoDB CHARSET=utf8 COLLATE=utf8_unicode_ci';
6
   public $tablePrefix;
7
   public $tableName;
8
9
   public function before() {
10
     $this->tablePrefix = Yii::app()->getDb()->tablePrefix;
11
     if ($this->tablePrefix <> '')
12
       $this->tableName = $this->tablePrefix.'account';
13
   }
14
15
     public function safeUp()
16
   {
17
 	  $this->before();
18
  $this->createTable($this->tableName, array(
19
             'id' => 'pk',
20
             'user_id' => 'integer default 0',
21
             'screen_name' => 'string NOT NULL',
22
             'oauth_token' => 'string NOT NULL',
23
             'oauth_token_secret' => 'string NOT NULL',
24
             'last_checked' => 'TIMESTAMP DEFAULT 0',
25
             'created_at' => 'DATETIME NOT NULL DEFAULT 0',
26
             'modified_at' => 'TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP',
27
               ), $this->MySqlOptions);
28
               $this->addForeignKey('fk_account_user', $this->tableName, 'user_id', $this->tablePrefix.'users', 'id', 'CASCADE', 'CASCADE');
29
 	}
30
31
 	public function safeDown()
32
 	{
33
 	  	$this->before();
34
 	  	$this->dropForeignKey('fk_account_user', $this->tableName);
35
 	    $this->dropTable($this->tableName);
36
 	}
37
}

Untuk memiliki Yii menjalankan migrasi yang akan membangun tabel SQL, kita melakukan ini: ./app/protected/yiic migrate up.

Anda akan melihat sesuatu seperti ini:

Example of Yii Migration ToolExample of Yii Migration ToolExample of Yii Migration Tool

Kita dapat menggunakan Gii, Yii's scaffolding berbasis web generator, untuk membangun kami model view controller untuk database.

Gii - the Yii Code GeneratorGii - the Yii Code GeneratorGii - the Yii Code Generator

Dalam lingkungan pengembangan saya, saya mengarahkan browser web saya ke localhost:8888/twitter/app/gii, ketik sandi Gii (disimpan di twitter.ini file), dan memilih Model Generator:

Using Gii to Build Our Model CodeUsing Gii to Build Our Model CodeUsing Gii to Build Our Model Code

Hanya dibutuhkan beberapa detik dan harus menunjukkan pesan sukses ini:

Gii Model Code Successfully GeneratedGii Model Code Successfully GeneratedGii Model Code Successfully Generated

Kode model Gii menghasilkan dapat digunakan untuk membangun berbagai metode yang berkaitan dengan tabel Account. Tapi Gii juga dapat menghasilkan awal antarmuka pengguna web untuk mengelola account Twitter.

Klik pada Bootstrap Generator, tentukan Account model, dan Gii akan membangun scaffolding untuk antarmuka pengguna web Account Anda:

Using the Gii Bootstrap Generator for Web ScaffoldingUsing the Gii Bootstrap Generator for Web ScaffoldingUsing the Gii Bootstrap Generator for Web Scaffolding

Kode yang dihasilkan menciptakan model view controller antarmuka standar yang terlihat seperti ini:

Gii Default ControllerGii Default ControllerGii Default Controller

Menggunakan Yii Active Record migrasi dan Gii adalah penghemat waktu sangat kuat untuk membangun dasar web user interface. Setelah kode scaffolder standar di buat, mudah untuk menyesuaikan dan memperpanjang itu.

Selanjutnya, kita akan membangun tabel database untuk menyimpan data Twitter, termasuk table kami Twitter_User dan tabel Tweet. Berikut adalah tabel Twitter_User:

1
      $this->createTable($this->tableName, array(
2
               'id' => 'pk',
3
               'twitter_user_id' => 'bigint(20) unsigned NOT NULL',
4
               'screen_name' => 'string NOT NULL',
5
               'name' => 'string DEFAULT NULL',
6
               'profile_image_url' => 'string DEFAULT NULL',
7
               'location' => 'string DEFAULT NULL',
8
               'url' => 'string DEFAULT NULL',
9
               'description' => 'string DEFAULT NULL',
10
               'followers_count' => 'int(10) unsigned DEFAULT NULL',
11
               'friends_count' => 'int(10) unsigned DEFAULT NULL',
12
               'statuses_count' => 'int(10) unsigned DEFAULT NULL',
13
               'time_zone' => 'string DEFAULT NULL',
14
               'created_at' => 'DATETIME NOT NULL DEFAULT 0',
15
               'modified_at' => 'TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP',
16
                 ), $this->MySqlOptions);
17
                 $this->createIndex('twitter_user_id', $this->tableName , 'twitter_user_id', true);               

Berikut adalah tabel Tweet:

1
    $this->createTable($this->tableName, array(
2
             'id' => 'pk',
3
             'account_id'=>'integer default 0',
4
             'twitter_user_id'=>'bigint(20) unsigned NOT NULL',
5
             'last_checked' => 'TIMESTAMP DEFAULT 0',
6
             'tweet_id' => 'BIGINT(20) unsigned NOT NULL',
7
             'tweet_text' => 'TEXT NOT NULL',
8
             'is_rt' => 'TINYINT DEFAULT 0',
9
             'created_at' => 'DATETIME NOT NULL DEFAULT 0',
10
             'modified_at' => 'TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP',
11
               ), $this->MySqlOptions);
12
               $this->createIndex('tweet_id', $this->tableName , 'tweet_id', true);               
13
               $this->addForeignKey('fk_tweet_account', $this->tableName, 'account_id', $this->tablePrefix.'account', 'id', 'CASCADE', 'CASCADE');
14
               $this->addForeignKey('fk_tweet_user_id', $this->tableName, 'twitter_user_id', $this->tablePrefix.'twitter_user', 'twitter_user_id', 'CASCADE', 'CASCADE');

Perhatikan bahwa kita menggunakan foregin key asing ke tabel TwitterUser. GII membangun hubungan kita pada model Twet:

1
    public function relations()
2
	{
3
		// NOTE: you may need to adjust the relation name and the related

4
		// class name for the relations automatically generated below.

5
		return array(
6
			'hashtags' => array(self::HAS_MANY, 'Hashtag', 'tweet_id'),
7
			'mentions' => array(self::HAS_MANY, 'Mention', 'tweet_id'),
8
			'account' => array(self::BELONGS_TO, 'Account', 'account_id'),
9
			'twitterUser' => array(self::BELONGS_TO, 'TwitterUser', 'twitter_user_id'),
10
			'urls' => array(self::HAS_MANY, 'Url', 'tweet_id'),		  
11
		);
12
	}

Yii Active Record kemudian secara otomatis mengelola bergabung untuk kita. Dengan demikian, Anda dapat referensi TwitterUser properti query Anda dengan kode seperti echo $tweet->twitterUser->profile_image_url.

Secara umum, Birdcage dimaksudkan sebagai sederhana framework yang Anda mungkin memperluas pada Anda sendiri. Aku tidak melakukan upaya besar di sini untuk meminimalkan ruang penyimpanan yang didasarkan pada ukuran Twitter definisi atau untuk mengoptimalkan hubungan dalam skema. Saya terutama dirancang untuk penggunaan pribadi.

Twitter pra-mem-parsing tweets ke dalam apa yang mereka sebut entitas, yang membantu menyaring metadata untuk Anda. Ini dibagi menjadi Mention, URL, dan Hashtags.

Mention

Ketika tweets mention pengguna lain, misalnya @tommcfarlin, Twitter menyediakan metadata yang menggambarkan mention mereka. Berikut adalah skema yang kita akan gunakan untuk menyimpannya:

1
    $this->createTable($this->tableName, array(
2
             'id' => 'pk',
3
             'tweet_id' => 'BIGINT(20) unsigned NOT NULL',
4
             'source_user_id'=>'bigint(20) unsigned NOT NULL',
5
             'target_user_id'=>'bigint(20) unsigned NOT NULL',
6
               ), $this->MySqlOptions);
7
               $this->addForeignKey('fk_mention_tweet', $this->tableName, 'tweet_id', $this->tablePrefix.'tweet', 'tweet_id', 'CASCADE', 'CASCADE');

URL

Setiap kali tweets menyertakan link, Twitter menyediakan metadata daftar mereka. Berikut adalah skema yang kita akan menggunakan untuk menyimpan URL yang dimasukkan dalam tweets:

1
    $this->createTable($this->tableName, array(
2
             'id' => 'pk',
3
             'tweet_id' => 'BIGINT(20) unsigned NOT NULL',
4
             'url'=>'string NOT NULL',
5
               ), $this->MySqlOptions);
6
    $this->addForeignKey('fk_url_tweet', $this->tableName, 'tweet_id', $this->tablePrefix.'tweet', 'tweet_id', 'CASCADE', 'CASCADE');

Hashtags

Setiap kali tweets memasukan hashtags, misalnya #php, Twitter menyediakan metadata yang menggambarkan mereka. Berikut adalah skema yang kita akan menggunakan untuk menyimpan hashtags termasuk dalam tweets:

1
    $this->createTable($this->tableName, array(
2
             'id' => 'pk',
3
             'tweet_id' => 'BIGINT(20) unsigned NOT NULL',
4
             'tag'=>'string NOT NULL',
5
               ), $this->MySqlOptions);
6
              $this->addForeignKey('fk_hashtag_tweet', $this->tableName, 'tweet_id', $this->tablePrefix.'tweet', 'tweet_id', 'CASCADE', 'CASCADE');

Migrasi ini membangun tabel utama yang kita akan menyimpan data dari Twitter API.

Dalam kode Birdcage, Anda akan melihat bahwa ada berbagai migrasi lain juga; sebagian besar dukungan aplikasi yang lebih luas.

Membangun Birdcage aplikasi

Anda akan perlu untuk mendaftar aplikasi dengan Twitter untuk mendapatkan tombol aplikasi OAuth pertama. Kunjungi situs Twitter pengembang dan klik Manage Your Apps. Klik create New Apps; Saya akan namai mine Twitter Framework untuk Yii:

Create an Application for the Twitter API Create an Application for the Twitter API Create an Application for the Twitter API

URL callback untuk menggunakan Birdcage harus http://yourdomain.com/twitter/callback. Ini adalah alamat yang Twitter akan mengembalikan request OAuth. Hal ini juga mengalamatkan Birdcage dari Twitter controller untuk API call.

Selama proses pembuatan, Anda harus mengkonfigurasi izin app (menggunakan read dan write untuk Birdcage) dan membuat catatan aplikasi OAuth key dan secret:

Twitter API Application PermissionsTwitter API Application PermissionsTwitter API Application Permissions

Berikut adalah apa yang Halaman kunci API akan muncul seperti apa. API key atas dan secret akan diperlukan untuk membuat Birdcage awalnya:

Twitter API Application KeysTwitter API Application KeysTwitter API Application Keys

Setelah Anda menambahkan aplikasi, Anda akan melihatnya di menu aplikasi Twitter:

Manage Your Twitter AppsManage Your Twitter AppsManage Your Twitter Apps

Setelah Anda menginstal kode, Anda akan perlu untuk menginisialisasi MySQL database dengan menjalankan migrasi-migrasi. Saya melakukan ini dalam dua langkah.

Pertama, saya menjalankan migrasi Yii-User. Ini adalah ektensi untuk Yii yang mengelola sebagian besar kebutuhan login dan registrasi pengguna saya:

./app/protected/yiic migrate--migrationPath=application.modules.user.migrations

Migrasi akan meminta Anda untuk membuat kredensial account pengguna utama untuk aplikasi web:

1
Admin login [admin]:
2
Admin email [webmaster@example.com]:
3
Admin password [admin]:

Ini adalah account yang akan Anda gunakan untuk masuk ke aplikasi web Birdcage, bukan kredensial account Twitter Anda.

Kemudian, saya menjalankan seluruh migrasi-migrasi: ./app/protected/yiic up.

Setelah Anda mengkonfigurasi Birdcage, mengunjungi situs Anda dalam browser web Anda, misalnya http://birdcage.yourdomain.com.

The BirdCage Twitter API Application Home PageThe BirdCage Twitter API Application Home PageThe BirdCage Twitter API Application Home Page

Setelah Anda log in, akan meminta Anda untuk memasukkan key OAuth aplikasi Anda dan alamat untuk Twitter controller, misalnya http://yourdomain.com/twitter (hanya controller, tidak callback) ditunjukkan pada gambar di atas:

The BirdCage Settings ScreenThe BirdCage Settings ScreenThe BirdCage Settings Screen

Sekarang, kita sudah siap untuk membuat hal-hal menarik yang terjadi.

Kesimpulan

Menantikan untuk bagian kedua dari tutorial ini. Bagian dua meliputi:

  1. Otentikasi pengguna OAuth
  2. pengolahan tweets di latar belakang
  3. posting ke Twitter

Kemudian, di bagian tiga, kita akan melihat menggunakan Twitter Streaming API dan open source Phirehose streaming implementasi. Sementara bagian dua proses tweets menggunakan REST API, Bagian tiga akan menjelaskan bagaimana untuk membangun koneksi always on dengan Twitter data stream.

Saya harap Anda telah menemukan ini berguna. Silahkan posting komentar, koreksi atau gagasan tambahan di bawah ini. Anda dapat melihat isi saya Tuts + tutorial lain pada halaman penulis saya atau ikuti saya di Twitter @reifman.

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.