


mata teras
- oAuth adalah seperti "kunci valet" yang membolehkan aplikasi PHP menyiarkan ke Twitter bagi pihak pengguna tanpa perlu memasukkan nama pengguna dan kata laluan setiap kali. Aplikasi adalah pengguna, pengguna adalah pemilik sumber, dan Twitter adalah pelayan atau penyedia perkhidmatan.
- Untuk menyiarkan maklumat di Twitter, aplikasi perlu mendapatkan kelayakan pelanggan sendiri: kunci pengguna dan kunci pengguna. Twitter memberikan kelayakan ini selepas permohonan melengkapkan borang pendaftaran dan memberikan maklumat seperti namanya, keterangan, URL laman web, dan URL panggil balik.
- Kunci Pengguna dan Kunci Pengguna membenarkan permohonan untuk berkomunikasi dengan API Twitter, tetapi untuk menyiarkan tweet bagi pihak pengguna, ia juga memerlukan kelayakan akses: token akses dan kekunci akses. Ini diperoleh dengan menggunakan kelayakan pengguna untuk bercakap dengan pengguna Twitter dan akhir.
- Artikel ini menyediakan panduan langkah demi langkah terperinci mengenai cara mendapatkan kelayakan ini, termasuk kod yang diperlukan untuk menjana URL Kredensial Permintaan, bagaimana untuk membina tandatangan berdasarkan rentetan, dan cara membuat URL yang meminta kelayakan akses.
Dapatkan kelayakan pengguna
Poskan ke Twitter bagi pihak pengguna tanpa meminta gabungan nama pengguna dan kata laluan setiap kali, ia memerlukan "kunci valet" ... kunci ini adalah oauth. Dalam istilah OAuth, aplikasi klien anda dipanggil pengguna , pengguna dipanggil pemilik sumber , dan Twitter adalah pelayan atau penyedia perkhidmatan . Sebelum Twitter menerima maklumat yang disiarkan oleh permohonan anda, anda perlu mendapatkan kelayakan pelanggan anda sendiri: Kunci Pengguna dan Kunci Pengguna . Twitter (dan kebanyakan perkhidmatan yang menyediakan API awam) memberi anda kunci dan kunci selepas anda melengkapkan borang pendaftaran (boleh didapati di dev.twitter.com/apps). Di Twitter, anda perlu memberikan beberapa maklumat untuk mengenal pasti permohonan anda, terutamanya namanya, keterangan, dan URL laman web, kepada pengguna semasa proses kebenaran. Anda juga perlu memasukkan URL panggil balik, yang akan saya jelaskan kemudian. Selepas menyerahkan borang permohonan Buat, anda akan dibawa ke halaman butiran permohonan baru. Tatal ke bawah untuk mencari kunci dan kunci pengguna anda. Anda akan memerlukan kunci ini bersama -sama dengan sebilangan kecil URL titik akhir yang disenaraikan. Perhatikan bahawa permohonan itu diberikan akses baca sahaja secara lalai;
Permohonan yang diberi kuasa
Kekunci pengguna dan kekunci pengguna membenarkan permohonan anda berkomunikasi dengan API Twitter, tetapi kunci ini sahaja tidak boleh menyiarkan tweet bagi pihak pengguna lain. Anda memerlukan kelayakan akses:Token akses dan kekunci akses . Untuk mendapatkan kelayakan ini dengan menggunakan kelayakan pengguna untuk mengadakan perbualan ringkas dengan pengguna Twitter dan akhir, buat permintaan kepada penyedia perkhidmatan (Twitter). Mendapatkan kelayakan akses boleh menjadi agak rumit, tetapi bernasib baik anda hanya perlu melakukan ini sekali untuk setiap pengguna. Anda boleh menyimpan kelayakan selama -lamanya untuk kegunaan kemudian tanpa pengguna mengesahkan permohonan anda. Perbualan yang meminta akses kepada kelayakan memerlukan set kelayakannya sendiri: permintaan token dan permintaan kunci .
Kebenaran Langkah 1: Permintaan Kelayakan
Proses kebenaran biasanya bermula dengan mengarahkan pengguna ke halaman "Kebenaran Twitter". Ini adalah halaman yang anda buat yang memulakan token permintaan dari Twitter dan memulakan proses kebenaran OAuth. Ia mesti menjana URL untuk mendapatkan kelayakan yang diminta, dan sebaik sahaja anda mempunyai kelayakan, anda boleh mengarahkan pengguna ke Twitter untuk memberikan kebenaran penerbitan permohonan. Permintaan permintaan kelayakan memerlukan permintaan tandatangan, yang bermaksud anda perlu menghantar tandatangan OAuth bersama -sama dengan parameter penting lain dalam permintaan. Tandatangan adalah senarai hash yang dikodkan oleh Base64 parameter yang diminta. Dalam kes Twitter, algoritma hashing adalah HMAC-SHA1. Proses tandatangan menghalang orang lain daripada menyamar sebagai aplikasi anda untuk menggunakan kelayakan anda, walaupun kunci pengguna dipindahkan dalam teks biasa. Hanya anda (pengguna) dan pelayan (Twitter) boleh menghasilkan semula tandatangan, kerana anda berdua adalah satu -satunya entiti yang harus mengetahui kunci pengguna yang mempunyai tandatangan. Mari kita bina rentetan di mana tandatangannya berdasarkan:<?php $requestTokenUrl = "http://api.twitter.com/oauth/request_token"; $authorizeUrl = "http://api.twitter.com/oauth/authorize"; $oauthTimestamp = time(); $nonce = md5(mt_rand()); $oauthSignatureMethod = "HMAC-SHA1"; $oauthVersion = "1.0"; $sigBase = "GET&" . rawurlencode($requestTokenUrl) . "&" . rawurlencode("oauth_consumer_key=" . rawurlencode($consumerKey) . "&oauth_nonce=" . rawurlencode($nonce) . "&oauth_signature_method=" . rawurlencode($oauthSignatureMethod) . "&oauth_timestamp=" . $oauthTimestamp . "&oauth_version=" . $oauthVersion);
Beberapa pembolehubah di atas mungkin agak jelas - $ requestTokenurl diambil dari Twitter apabila anda mendapat kelayakan pengguna, dan $ oauthtimestamp adalah timestamp UNIX semasa. Item yang kurang jelas adalah $ nonce, yang tidak lebih daripada rentetan rawak yang hanya digunakan sekali (setiap transaksi menggunakan nonce yang berbeza). Umumnya, nombor rawak hash MD5 sangat berguna sebagai nonce. Terdapat juga $ oauthsignaturemethod, yang selalu hmac-sha1 untuk twitter, dan $ oauthersion untuk twitter, kini v1.0 untuk twitter. Seterusnya, rentetan yang ditandatangani dibina sebagai $ sigbase. Oauth menunjukkan bahawa asas tandatangan mestilah kaedah HTTP (dalam kes ini), diikuti dengan "&" diikuti oleh URL permintaan yang dikodkan URL ($ requestTokenurl), diikuti oleh yang lain "&", dan akhirnya senarai yang dikodkan dan abjad Perhatikan bahawa apabila OAuth memerlukan kandungan yang dikodkan URL, ia merujuk kepada RFC-3986. Fungsi Rawurlencode () PHP berfungsi kerana ia mengkodekan ruang sebagai ", bukannya", seperti urlencode (). Anda juga memerlukan kunci tandatangan. Kuncinya sentiasa menjadi kunci pengguna diikuti oleh "&", dan 1) kunci token oauth (yang merupakan sebahagian daripada kelayakan token yang belum anda miliki), atau 2) apa -apa. Anda kemudian boleh menggunakan fungsi hash_hmac () terbina dalam PHP untuk menghasilkan tandatangan akhir.
<?php $sigKey = $consumerSecret . "&"; $oauthSig = base64_encode(hash_hmac("sha1", $sigBase, $sigKey, true));
Anda meletakkan semua bahagian bersama untuk membina URL yang meminta kelayakan:
<?php $requestUrl = $requestTokenUrl . "?" . "oauth_consumer_key=" . rawurlencode($consumerKey) . "&oauth_nonce=" . rawurlencode($nonce) . "&oauth_signature_method=" . rawurlencode($oauthSignatureMethod) . "&oauth_timestamp=" . rawurlencode($oauthTimestamp) . "&oauth_version=" . rawurlencode($oauthVersion) . "&oauth_signature=" . rawurlencode($oauthSig); $response = file_get_contents($requestUrl);
Anda memerlukan lebih banyak pengendalian ralat untuk apa -apa di luar demo mudah ini, tetapi buat masa ini, saya mengandaikan bahawa tidak akan ada sebarang kesilapan dan anda dapat menerima kelayakan permintaan sementara dalam $ respons. Tanggapan yang dihantar oleh Twitter adalah seperti berikut:
<code>oauth_token=mjeaYNdNYrvLBag6xJNWkxCbgL5DV6yPZl6j4palETU&oauth_token_secret=W45dnBz917gsdMqDu4bWNmShQq5A8pRwoLnJVm6kvzs&oauth_callback_confirmed=true</code>Nilai
oauth_token dan oauth_token_secret diekstrak dari respons dan digunakan untuk membina pautan seterusnya pengguna mengakses dalam langkah kedua proses kebenaran. Adalah lebih baik untuk menyimpan kelayakan yang diminta dalam sesi pengguna supaya mereka boleh digunakan apabila pengguna kembali dari halaman kebenaran Twitter. URL Kebenaran boleh didapati di halaman Butiran selepas mendaftarkan permohonan anda menggunakan Twitter.
<?php parse_str($response, $values); $_SESSION["requestToken"] = $values["oauth_token"]; $_SESSION["requestTokenSecret"] = $values["oauth_token_secret"]; $redirectUrl = $authorizeUrl . "?oauth_token=" . $_SESSION["requestToken"]; header("Location: " . $redirectUrl);
Sekarang aplikasinya boleh menghantar pengguna ke Twitter untuk kebenaran, ini adalah masa yang baik untuk menambah URL panggil balik supaya Twitter dapat menghantarnya kembali ke aplikasinya! URL Callback adalah tidak lebih daripada alamat yang Twitter mengarahkan pengguna selepas pengguna membenarkan permohonan anda untuk menghantar tweet bagi pihaknya dan ditentukan pada tab Tetapan halaman Butiran. Apabila Twitter mengalihkan pengguna ke URL panggil balik, ia menambah dua parameter tambahan: OAUTH_TOKEN dalam permintaan awal anda, yang boleh digunakan untuk pengesahan, dan oAuth_verifier, yang boleh digunakan untuk kelayakan kebenaran. Dalam tiga set kredensial, anda perlu menyiarkan tweet, anda kini mempunyai kelayakan dua orang dan meminta kelayakan. Seterusnya: Kelayakan Akses!
Kebenaran Langkah 2: Kelayakan Akses
Untuk mendapatkan kelayakan akses, anda memerlukan OAUTH_TOKEN, OAUTH_TOKEN_SECRET dan OAUTH_VERIFIER yang baru diperolehi. Langkah ini memerlukan permintaan tandatangan lain, kali ini untuk URL Token Akses yang dipaparkan pada halaman Butiran.
<?php $requestTokenUrl = "http://api.twitter.com/oauth/request_token"; $authorizeUrl = "http://api.twitter.com/oauth/authorize"; $oauthTimestamp = time(); $nonce = md5(mt_rand()); $oauthSignatureMethod = "HMAC-SHA1"; $oauthVersion = "1.0"; $sigBase = "GET&" . rawurlencode($requestTokenUrl) . "&" . rawurlencode("oauth_consumer_key=" . rawurlencode($consumerKey) . "&oauth_nonce=" . rawurlencode($nonce) . "&oauth_signature_method=" . rawurlencode($oauthSignatureMethod) . "&oauth_timestamp=" . $oauthTimestamp . "&oauth_version=" . $oauthVersion);
$ AccessTokenurl adalah titik akhir seterusnya yang diperoleh dari halaman butiran. Menjana $ OAuthTimeStamp baru dan $ nonce dan hantar semula $ OAuthVerifier dari halaman kebenaran Twitter. Tidak disenaraikan, tetapi dalam array $ _Session, adalah kelayakan permintaan dari langkah sebelumnya, yang juga diperlukan. Langkah ini dalam proses kebenaran memerlukan permintaan tandatangan yang lain. Sebaik sahaja tandatangan dibina, ia akan digunakan dengan permintaan kelayakan akses.
<?php $sigKey = $consumerSecret . "&"; $oauthSig = base64_encode(hash_hmac("sha1", $sigBase, $sigKey, true));
Respons ini kali ini mengandungi skrin_name yang sangat berguna, user_id dan kelayakan akses yang lama ditunggu-tunggu!
Ringkasan
Artikel ini menamatkan bahagian kebenaran. Setakat ini, anda telah belajar bagaimana untuk membuat aplikasi Twitter baru dan melangkah melalui "tarian" OAuth dengan kelayakan pengguna yang disediakan untuk mendapatkan kelayakan akses. Di bahagian kedua dan terakhir siri ini, saya akan membincangkan cara menggunakan kelayakan akses untuk menyiarkan tweet ke aliran Twitter pengguna.
(gambar asal harus dikekalkan di sini, tetapi kerana gambar tidak dapat dipaparkan secara langsung, pautan gambar dikekalkan)
oauth 1.0 Soalan Lazim (Soalan Lazim)
(Kandungan FAQ asal harus dikekalkan di sini, tetapi disebabkan oleh panjang artikel, bahagian FAQ ditinggalkan di sini demi kesederhanaan.)
Atas ialah kandungan terperinci PHP Master | Memahami OAuth - Tweeting dari awal, Bahagian 1. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Masalah dan penyelesaian biasa untuk skop pembolehubah PHP termasuk: 1. Pembolehubah global tidak dapat diakses dalam fungsi, dan ia perlu diluluskan menggunakan kata kunci atau parameter global; 2. Pembolehubah statik diisytiharkan dengan statik, dan ia hanya dimulakan sekali dan nilai dikekalkan antara pelbagai panggilan; 3. Pembolehubah hyperglobal seperti $ _get dan $ _post boleh digunakan secara langsung dalam mana -mana skop, tetapi anda perlu memberi perhatian kepada penapisan yang selamat; 4. Fungsi Anonymous perlu memperkenalkan pembolehubah skop induk melalui kata kunci penggunaan, dan apabila mengubah suai pembolehubah luaran, anda perlu lulus rujukan. Menguasai peraturan ini boleh membantu mengelakkan kesilapan dan meningkatkan kestabilan kod.

Untuk mengendalikan muat naik fail PHP dengan selamat, anda perlu mengesahkan sumber dan jenis, mengawal nama fail dan laluan, menetapkan sekatan pelayan, dan memproses fail media dua kali. 1. Sahkan sumber muat naik untuk mengelakkan CSRF melalui token dan mengesan jenis mime sebenar melalui finfo_file menggunakan kawalan putih; 2. Namakan semula fail ke rentetan rawak dan tentukan pelanjutan untuk menyimpannya dalam direktori bukan web mengikut jenis pengesanan; 3. Konfigurasi PHP mengehadkan saiz muat naik dan direktori sementara Nginx/Apache melarang akses ke direktori muat naik; 4. Perpustakaan GD menyambung semula gambar -gambar untuk membersihkan data yang berpotensi.

Terdapat tiga kaedah umum untuk kod komen PHP: 1. Use // atau # untuk menyekat satu baris kod, dan disyorkan untuk menggunakan //; 2. Gunakan /.../ untuk membungkus blok kod dengan pelbagai baris, yang tidak boleh bersarang tetapi boleh diseberang; 3. Komen -komen kemahiran gabungan seperti menggunakan / jika () {} / untuk mengawal blok logik, atau untuk meningkatkan kecekapan dengan kunci pintasan editor, anda harus memberi perhatian kepada simbol penutupan dan mengelakkan bersarang apabila menggunakannya.

Ageneratorinphpisamemory-efficientwaytoiterateOverlargedatasetsbyieldingvaluesonateatimeNsteadofreturningthemallatonce.1.GeneratorSuseTheyEldeyWorderWorderToProducevaluuesondemand,

Kunci untuk menulis komen PHP adalah untuk menjelaskan tujuan dan spesifikasi. Komen harus menjelaskan "mengapa" dan bukannya "apa yang dilakukan", mengelakkan redundansi atau terlalu kesederhanaan. 1. Gunakan format bersatu, seperti docblock (/*/) untuk deskripsi kelas dan kaedah untuk meningkatkan keserasian dan keserasian alat; 2. Menekankan sebab -sebab di sebalik logik, seperti mengapa JS melompat perlu dikeluarkan secara manual; 3. Tambahkan gambaran keseluruhan gambaran sebelum kod kompleks, terangkan proses dalam langkah -langkah, dan membantu memahami idea keseluruhan; 4. Gunakan Todo dan Fixme secara rasional untuk menandakan item dan masalah untuk memudahkan penjejakan dan kerjasama berikutnya. Anotasi yang baik dapat mengurangkan kos komunikasi dan meningkatkan kecekapan penyelenggaraan kod.

Tolearnphpeffectively, startbysettingupalocalverenvironmentusingToolsLikexamppandaCodeDitorLikevscode.1) InstallXamppforapa Che, MySql, danPhp.2) UseAcodeeditorForsyntaxSupport.3) testyoursetupwithasimplephpfile.next, learnphpbasicsincludingvariables, ech

Toinstallphpquickly, usexampponwindowsorhomeBrewonmacos.1.onwindows, downloadandInstallxampp, selectcomponents, startapache, andplaceFilesinhtdocs.2.alternative, secara manualstallphpfromphp.netandsheBerver.3

Dalam PHP, anda boleh menggunakan kurungan persegi atau pendakap keriting untuk mendapatkan aksara indeks spesifik rentetan, tetapi kurungan persegi disyorkan; Indeks bermula dari 0, dan akses di luar julat mengembalikan nilai null dan tidak dapat diberikan nilai; MB_SUBSTR dikehendaki mengendalikan watak multi-bait. Sebagai contoh: $ str = "hello"; echo $ str [0]; output h; dan watak -watak Cina seperti MB_SUBSTR ($ str, 1,1) perlu mendapatkan hasil yang betul; Dalam aplikasi sebenar, panjang rentetan perlu diperiksa sebelum gelung, rentetan dinamik perlu disahkan untuk kesahihan, dan projek berbilang bahasa mengesyorkan menggunakan fungsi keselamatan multi-bait secara seragam.
