OAuth / Twitter Tupoksi Adapter untuk Zend Framework
Pekerjaan terus (lambat) on baru saya Twitter berasaskan aplikasi. Selama beberapa hari cuti berikutnya bank saya berharap untuk mendapatkan momentum terjadi lagi di projek (di-walaupun cuaca indah saat ini). Pokoknya, tugas saya seterusnya adalah untuk mencipta penyesuai pengesahan untuk Zend Framework . Aku punya login pelaksanaan kerja, tetapi mempunyai penurunan penyesuai Tupoksi untuk Zend Framework sepertinya proposal yang menarik, jadi saya buat itu ....
(Saya tidak akan pergi melalui OAuth atau mendaftarkan aplikasi anda dengan twitter, ada beratus-ratus panduan dan bagaimanapun proses langsung yang cukup a.)
Perbezaan antara OAuth dan adapter authenication lain di Zend Framework adalah bahawa OAuth memerlukan mengarahkan bolak-balik antara pembekal OAuth dan meminta pelayan oleh pelanggan. Oleh kerana proses ini tidak cukup sebagai lurus ke depan sebagai hanya mencari beberapa butiran di dalam sistem database atau memeriksa header permintaan. Untungnya komponen Zend Framework, seperti Zend_Oauth_Consumer , turun banyak rasa sakit jauh dan hanya pada tugas penyesuai pengesahan untuk membuat panggilan kaedah yang diharuskan.
Untuk panduan untuk menggunakan Zend_Auth dan pengesahan tampil dengan Zend Framework telah carian di google, atau semak tutorial ini oleh Matthew Weier O'Phinney - Masuk dan Authentication .
Global
Untuk menggunakan penyesuai pengesahan anda harus lulus dua objek dalam melalui constructor. Yang pertama adalah sebuah contoh dari Zend_Oauth_Consumer ditetapkan untuk pembekal OAuth anda. Aku sudah melakukan hal ini dengan perkhidmatan Twitter's dan anda boleh melihat sepotong cepat bahawa di sini - Sign in dengan Twitter menggunakan Zend Framework . Saya menggunakan pelaksanaan di mana saya menetapkan "URL Kebenaran" kerana saya tidak mahu pengguna harus diminta untuk memberikan izin untuk aplikasi setiap kali mereka cuba untuk login. Parameter kedua adalah turunan dari Zend_Session_Namespace yang instantiated dengan namespace di mana anda ingin menempatkan butiran pengesahan. Dalam kod saya, saya mempunyai sesuatu seperti berikut:
$ Config = array ( 'CallbackUrl' => ... callback-url ..., 'SITEURL' => 'https: / / twitter.com / OAuth', 'ConsumerKey' => ... pelanggan-key ..., 'ConsumerSecret' => ... rahsia-key ..., ); $ Pelanggan Zend_Oauth_Consumer = baru ($ config); setAuthorizeUrl $ pelanggan-> ('https: / / twitter.com / OAuth / mengesahkan'); $ Session = new Zend_Session_Namespace (Pro_Auth_Adapter_Twitter:: AUTH_NAMESPACE); $ AuthAdapter Pro_Auth_Adapter_Oauth = baru ($ pelanggan, $ session);
Memanggil ->authenticate() pada penyesuai akan menyebabkan redirect kepada pembekal OAuth (lagi dalam kes saya Twitter). Setelah kembali ke aplikasi panggilan kedua untuk ->authenticate() benar-benar akan melakukan pengesahan itu sendiri.
Jika anda ingin user untuk kembali ke laman initally diminta kemudian diberikan status pengesahan anda diperiksa pada setiap permintaan kemudian hanya menentukan parameter 'callBackUrl' yang sesuai pada waktu buka akan mendapatkan pengguna untuk tujuan mereka semula direncanakan.
Salah satu ciri yang terakhir aku menambah adalah kemampuan untuk menghantar parameter tambahan menggunakan addParameter() dan setParameters() kaedah. Menambah fungsi ini membolehkan penghantaran tambahan GET parameter ketika membuat awal redirect kepada pembekal OAuth. Dalam kes saya, ini membolehkan saya untuk melewati sebuah array dengan kunci 'force_login' dan nilai true yang memaksa Twitter untuk meminta anda login lagi (bahkan jika sudah log in) yang sangat bagus untuk-berkaitan-aplikasi multi account.
Kod terdapat di repo Github saya - OAuth penyesuai auth untuk kod Zend Framework (komen welcome!).
Edit: Sepertinya seseorang telah di kes juga. Untuk pelaksanaan yang lain sila lihat http://www.jasonawesome.com/2010/11/24/authenticating-to-twitter-with-zend_auth/


















































