キーテイクアウト
- OAuthは、保護(hù)されたデータと対話するためのより安全な方法を提供する認(rèn)証プロトコルであり、パスワードを共有せずにユーザーに代わってアプリケーションを行うことができます。 Twitterは、HTTPリクエストをAPIに承認(rèn)するためにOAuthを使用しています。 チュートリアルでは、Twitterを消費(fèi)するためのWordPress HTTP APIを搭載したPHPクラスを作成する方法に関するステップバイステップガイドを提供します。これには、Twitterのキーおよびアクセストークンのアプリケーション管理センターにアプリケーションの作成、PHPクラスのコーディング、OAuth認(rèn)証を使用してTwitterにHTTPリクエストを作成することが含まれます。
- チュートリアルで作成されたPHPクラスは、WordPressプラグインのコンテキスト內(nèi)で使用してTwitterデータにアクセスできます。提供されている例には、最近のツイートの取得とプロファイルの説明の更新が含まれます。 チュートリアルは、OAuthを正しく構(gòu)成し、展開エラーを避けるために正しいAPIキーを使用することの重要性を強(qiáng)調(diào)しています。また、不正アクセスを防ぐためにOAuthトークンを保護(hù)する必要性を強(qiáng)調(diào)しています。
- 以前のチュートリアルでは、WordPress HTTP APIに深く飛び込みました。次のプラグインを構(gòu)築して、その使用法の実世界の例を示すために、ドメインWHOISとソーシャルデータウィジェットを示しました。 WordPressログイン、登録、コメント用のCaptcha Protection Plugin;使い捨てのメールアドレスのサインアップを停止するためのプラグイン。
- このチュートリアルでは、OAuthの世界に紹介されます。TwitterがHTTPリクエストをAPIに承認(rèn)するためにそれを使用し、最後にTwitterを消費(fèi)するときにプラグインが利用できるWordPress HTTP APIを搭載したPHPクラスを構(gòu)築する方法を紹介します。 。
OAuthは、保護(hù)されたデータを公開および対話するためのシンプルで安全で安全な方法を提供する認(rèn)証プロトコルです。これにより、ユーザーはパスワードを共有せずに自分に代わって行動(dòng)するアプリケーションを承認(rèn)できます。
ユーザーに代わって保護(hù)されたデータを保存している場合、アクセスするためにパスワードをウェブ上に広めてはいけません。代わりに、OAUTHを使用して、アカウントの資格情報(bào)を保護(hù)しながら、ユーザーがデータにアクセスできるようにすることができます。 PHPクラスのコーディング
PHPクラスをコーディングするときに、OAuth認(rèn)証を使用してTwitterへのHTTPリクエストがどのように作成されるかについての実行ダウン。 最初に、Twitterのアプリケーション管理センターに向かいます。キーをつかみ、トークンにアクセスするアプリケーションを作成します。
Twitterアプリケーションの作成とAPIキーの取得に関するステップバイステップガイドは、hostoople.com
にあります。PHPクラスを作成し、さまざまなパラメーターを保存するプロパティを含めます。これらの概要を以下に示します
<span>class Twitter_API_WordPress { </span> <span>/** <span>@var <span>string</span> OAuth access token */</span> </span> <span>private $oauth_access_token; </span> <span>/** <span>@var <span>string</span> OAuth access token secrete */</span> </span> <span>private $oauth_access_token_secret; </span> <span>/** <span>@var <span>string</span> Consumer key */</span> </span> <span>private $consumer_key; </span> <span>/** <span>@var <span>string</span> consumer secret */</span> </span> <span>private $consumer_secret; </span> <span>/** <span>@var <span>array</span> POST parameters */</span> </span> <span>private $post_fields; </span> <span>/** <span>@var <span>string</span> GET parameters */</span> </span> <span>private $get_field; </span> <span>/** <span>@var <span>array</span> OAuth credentials */</span> </span> <span>private $oauth_details; </span> <span>/** <span>@var <span>string</span> Twitter's request URL */</span> </span> <span>private $request_url; </span> <span>/** <span>@var <span>string</span> Request method or HTTP verb */</span> </span> <span>private $request_method;</span>
コンストラクターは、Twitterのアプリケーションコンシューマー(またはAPI)キーと秘密の配列を受け入れ、トークンとアクセストークンシークレットにアクセスし、それぞれのプロパティに保存します。
<span>/** Class constructor */ </span> <span>public function __construct( $settings ) { </span> <span>if ( ! isset( $settings['oauth_access_token'] ) </span> <span>|| ! isset( $settings['oauth_access_token_secret'] ) </span> <span>|| ! isset( $settings['consumer_key'] ) </span> <span>|| ! isset( $settings['consumer_secret'] ) </span> <span>) { </span> <span>return new WP_Error( 'twitter_param_incomplete', 'Make sure you are passing in the correct parameters' ); </span> <span>} </span> <span>$this->oauth_access_token = $settings['oauth_access_token']; </span> <span>$this->oauth_access_token_secret = $settings['oauth_access_token_secret']; </span> <span>$this->consumer_key = $settings['consumer_key']; </span> <span>$this->consumer_secret = $settings['consumer_secret']; </span> <span>}</span>次は、HTTPリクエストのGETまたはPOSTパラメーターを受け入れるメソッドです。
プライベートメソッド_build_signature_base_string()は、次の引數(shù)を受け入れて署名ベース文字列を作成します:リクエストURL、リクエスト方法またはHTTP動(dòng)詞、およびOAuth資格情報(bào)(消費(fèi)者キーとシークレット;アクセストークンと秘密;それはget requestです)。
<span>/** </span><span> * Store the POST parameters </span><span> * </span><span> * <span>@param <span>array</span> $array array of POST parameters </span></span><span> * </span><span> * <span>@return $this </span></span><span> */ </span> <span>public function set_post_fields( array $array ) { </span> <span>$this->post_fields = $array; </span> <span>return $this; </span> <span>} </span> <span>/** </span><span> * Store the GET parameters </span><span> * </span><span> * <span>@param $string </span></span><span> * </span><span> * <span>@return $this </span></span><span> */ </span> <span>public function set_get_field( $string ) { </span> <span>$this->getfield = $string; </span> <span>return $this; </span> <span>}</span>
_generate_oauth_signature()private methodは、作成された署名ベース文字列を受け入れて、oauth署名を生成します。
oauth_consumer_key - Twitterアプリケーション消費(fèi)者キー
oauth_nonce - クライアントがユニークに生成するランダムな文字列は、time()またはmt_rand()。<span>private function _generate_oauth_signature( $data ) { </span> <span>// encode consumer and token secret keys and subsequently combine them using & to a query component </span> <span>$hash_hmac_key = rawurlencode( $this->consumer_secret ) . '&' . rawurlencode( $this->oauth_access_token_secret ); </span> <span>$oauth_signature = base64_encode( hash_hmac( 'sha1', $data, $hash_hmac_key, true ) ); </span> <span>return $oauth_signature; </span><span>}</span>oauth_signature_method - 頻繁に
“ hmac-sha1”
- oauth_token - アプリケーションoauthトークン。
- oauth_timestamp - time() で作成された現(xiàn)在のタイムスタンプ
- oauth_version - Twitterはバージョン1.0 を使用します oauth_signature - _generate_oauth_signature() によって生成されたoauth署名
- リクエスト方法またはhttp動(dòng)詞もrequest_methodプロパティに保存されます。
- ここに、私たちが話したauthorization_header()メソッドのコードがあります。
- process_request()は、要求方法に応じてwp_remote_get()またはwp_remote_post()を使用してget or requestを送信し、その後wp_remote_retrieve_body()。
そして最後に、クラスを閉じます。
<span>/** </span><span> * Build, generate and include the OAuth signature to the OAuth credentials </span><span> * </span><span> * <span>@param <span>string</span> $request_url Twitter endpoint to send the request to </span></span><span> * <span>@param <span>string</span> $request_method Request HTTP verb eg GET or POST </span></span><span> * </span><span> * <span>@return $this </span></span><span> */ </span> <span>public function build_oauth( $request_url, $request_method ) { </span> <span>if ( ! in_array( strtolower( $request_method ), array( 'post', 'get' ) ) ) { </span> <span>return new WP_Error( 'invalid_request', 'Request method must be either POST or GET' ); </span> <span>} </span> <span>$oauth_credentials = array( </span> <span>'oauth_consumer_key' => $this->consumer_key, </span> <span>'oauth_nonce' => time(), </span> <span>'oauth_signature_method' => 'HMAC-SHA1', </span> <span>'oauth_token' => $this->oauth_access_token, </span> <span>'oauth_timestamp' => time(), </span> <span>'oauth_version' => '1.0' </span> <span>); </span> <span>if ( ! is_null( $this->get_field ) ) { </span> <span>// remove question mark(?) from the query string </span> <span>$get_fields = str_replace( '?', '', explode( '&', $this->get_field ) ); </span> <span>foreach ( $get_fields as $field ) { </span> <span>// split and add the GET key-value pair to the post array. </span> <span>// GET query are always added to the signature base string </span> <span>$split = explode( '=', $field ); </span> <span>$oauth_credentials[ $split[0] ] = $split[1]; </span> <span>} </span> <span>} </span> <span>// convert the oauth credentials (including the GET QUERY if it is used) array to query string. </span> <span>$signature = $this->_build_signature_base_string( $request_url, $request_method, $oauth_credentials ); </span> <span>$oauth_credentials['oauth_signature'] = $this->_generate_oauth_signature( $signature ); </span> <span>// save the request url for use by WordPress HTTP API </span> <span>$this->request_url = $request_url; </span> <span>// save the OAuth Details </span> <span>$this->oauth_details = $oauth_credentials; </span> <span>$this->request_method = $request_method; </span> <span>return $this; </span> <span>}</span>
注意:set_post_fields()、set_get_field()、build_oauth()で、オブジェクト$は、メソッドチェーンをサポートするために各方法で返されます。
例:<span>/** </span><span> * Generate the authorization HTTP header </span><span> * <span>@return <span>string</span> </span></span><span> */ </span> <span>public function authorization_header() { </span> <span>$header = 'OAuth '; </span> <span>$oauth_params = array(); </span> <span>foreach ( $this->oauth_details as $key => $value ) { </span> <span>$oauth_params[] = "<span><span>$key</span>=\""</span> . rawurlencode( $value ) . '"'; </span> <span>} </span> <span>$header .= implode( ', ', $oauth_params ); </span> <span>return $header; </span> <span>}</span>
よりよく理解するために、以下のクラスの使用法を參照してください。
<span>/** </span><span> * Process and return the JSON result. </span><span> * </span><span> * <span>@return <span>string</span> </span></span><span> */ </span> <span>public function process_request() { </span> <span>$header = $this->authorization_header(); </span> <span>$args = array( </span> <span>'headers' => array( 'Authorization' => $header ), </span> <span>'timeout' => 45, </span> <span>'sslverify' => false </span> <span>); </span> <span>if ( ! is_null( $this->post_fields ) ) { </span> <span>$args['body'] = $this->post_fields; </span> <span>$response = wp_remote_post( $this->request_url, $args ); </span> <span>return wp_remote_retrieve_body( $response ); </span> <span>} </span> <span>else { </span> <span>// add the GET parameter to the Twitter request url or endpoint </span> <span>$url = $this->request_url . $this->get_field; </span> <span>$response = wp_remote_get( $url, $args ); </span> <span>return wp_remote_retrieve_body( $response ); </span> <span>} </span> <span>}</span>クラスの使用方法
このクラスは、WordPressプラグインのコンテキスト內(nèi)で使用する必要があります。ワードプレスHTTP APIが機(jī)能するために必要なため、スタンドアロンクラスとしては機(jī)能しません。
最新のツイートのリストまたはコレクションを取得するには、以下のガイドに従ってください。 注:https://api.twitter.com/1.1/statuses/user_timeline.jsonは、最近のツイートデータを取得するためのリソースURLです。
最初に、アクセスキーとトークンの配列を作成します。<span>class Twitter_API_WordPress { </span> <span>/** <span>@var <span>string</span> OAuth access token */</span> </span> <span>private $oauth_access_token; </span> <span>/** <span>@var <span>string</span> OAuth access token secrete */</span> </span> <span>private $oauth_access_token_secret; </span> <span>/** <span>@var <span>string</span> Consumer key */</span> </span> <span>private $consumer_key; </span> <span>/** <span>@var <span>string</span> consumer secret */</span> </span> <span>private $consumer_secret; </span> <span>/** <span>@var <span>array</span> POST parameters */</span> </span> <span>private $post_fields; </span> <span>/** <span>@var <span>string</span> GET parameters */</span> </span> <span>private $get_field; </span> <span>/** <span>@var <span>array</span> OAuth credentials */</span> </span> <span>private $oauth_details; </span> <span>/** <span>@var <span>string</span> Twitter's request URL */</span> </span> <span>private $request_url; </span> <span>/** <span>@var <span>string</span> Request method or HTTP verb */</span> </span> <span>private $request_method;</span>
w3guyがあなたのTwitterユーザー名であるリクエストURLとメソッドを設(shè)定します。
<span>/** Class constructor */ </span> <span>public function __construct( $settings ) { </span> <span>if ( ! isset( $settings['oauth_access_token'] ) </span> <span>|| ! isset( $settings['oauth_access_token_secret'] ) </span> <span>|| ! isset( $settings['consumer_key'] ) </span> <span>|| ! isset( $settings['consumer_secret'] ) </span> <span>) { </span> <span>return new WP_Error( 'twitter_param_incomplete', 'Make sure you are passing in the correct parameters' ); </span> <span>} </span> <span>$this->oauth_access_token = $settings['oauth_access_token']; </span> <span>$this->oauth_access_token_secret = $settings['oauth_access_token_secret']; </span> <span>$this->consumer_key = $settings['consumer_key']; </span> <span>$this->consumer_secret = $settings['consumer_secret']; </span> <span>}</span>最後に、そのようなリクエストを処理します。
<span>/** </span><span> * Store the POST parameters </span><span> * </span><span> * <span>@param <span>array</span> $array array of POST parameters </span></span><span> * </span><span> * <span>@return $this </span></span><span> */ </span> <span>public function set_post_fields( array $array ) { </span> <span>$this->post_fields = $array; </span> <span>return $this; </span> <span>} </span> <span>/** </span><span> * Store the GET parameters </span><span> * </span><span> * <span>@param $string </span></span><span> * </span><span> * <span>@return $this </span></span><span> */ </span> <span>public function set_get_field( $string ) { </span> <span>$this->getfield = $string; </span> <span>return $this; </span> <span>}</span>すべてがうまくいけば、変數(shù)$の結(jié)果には、最近のツイートのJSONデータが入力されます。 たとえば、投稿リクエストについては、プロフィールの説明を更新するとします。
クレジットとリソース
このクラスの構(gòu)造とコードは、ジェームズ?マリソンのPHP Twitterクライアントに觸発されました。
<span>/** </span><span> * Create a signature base string from list of arguments </span><span> * </span><span> * <span>@param <span>string</span> $request_url request url or endpoint </span></span><span> * <span>@param <span>string</span> $method HTTP verb </span></span><span> * <span>@param <span>array</span> $oauth_params Twitter's OAuth parameters </span></span><span> * </span><span> * <span>@return <span>string</span> </span></span><span> */ </span> <span>private function _build_signature_base_string( $request_url, $method, $oauth_params ) { </span> <span>// save the parameters as key value pair bounded together with '&' </span> <span>$string_params = array(); </span> <span>ksort( $oauth_params ); </span> <span>foreach ( $oauth_params as $key => $value ) { </span> <span>// convert oauth parameters to key-value pair </span> <span>$string_params[] = "<span><span>$key</span>=<span>$value</span>"</span>; </span> <span>} </span> <span>return "<span><span>$method</span>&"</span> . rawurlencode( $request_url ) . '&' . rawurlencode( implode( '&', $string_params ) ); </span> <span>}</span>Twitter APIとOAuthの詳細(xì)については、以下のリソースを參照してください。
oauth認(rèn)証は
に陥りました
Twitter OAuthがシナリオコンテキストでどのように機(jī)能するかTwitterのドキュメント
- php oauthサーバーの作成
- ietf rfc
- 結(jié)論
- この記事では、WordPress HTTP APIを搭載したHTTPクライアントクラスを使用してOAUTHとTwitterを消費(fèi)する方法について學(xué)びました。前述のように、このクラスは、WordPress HTTP APIを使用するため、WordPressプラグイン內(nèi)で使用する必要があります。このPHPクラスは、たとえば最近のツイートウィジェットなど、建物に役立つことがあります。 コードはGitHubで利用できます。お?dú)葺Xにフォークしたり、プルリクエストを送信したりすることもできます。
- 私の今後のチュートリアルに遅れずについていくために、WordPressチャンネルを購読してください。
oauth、twitter、およびwordpress http api
に関するよくある質(zhì)問
WordPressサイトでOAUTH2をセットアップするにはどうすればよいですか?WordPressサイトでOAUTH2のセットアップには、OAUTH2プラグインのインストールと構(gòu)成が含まれます。 WordPressプラグインディレクトリで利用可能ないくつかのプラグインから選択できます。プラグインをインストールしたら、クライアントIDやクライアントSecretなど、OAUTH2プロバイダーの詳細(xì)でそれを構(gòu)成する必要があります。また、プロバイダーの要件に応じて、リダイレクトURLとスコープをセットアップする必要があります。安全な委任されたアクセス。これにより、ユーザーはパスワードを共有せずにTwitterアカウントへのサードパーティのアプリケーションアクセスを許可できます。これは、アプリケーションがお客様に代わってTwitterと対話し、ツイート、タイムラインの読み取り、新しいユーザーのフォローなどのアクションを?qū)g行できることを意味します。 TwitterのAPIの問題は、アプリケーションが正しく構(gòu)成され、正しいAPIキーを使用していることを確認(rèn)することで修正できます。また、アプリケーションがTwitterのレート制限を超えていないことを確認(rèn)する必要があります。まだ問題が発生している場合は、さらなる支援のためにTwitterの開発者サポートに連絡(luò)する価値があるかもしれません。以上がOauth、Twitter、WordPress HTTP APIおよびあなたの詳細(xì)內(nèi)容です。詳細(xì)については、PHP 中國語 Web サイトの他の関連記事を參照してください。

ホットAIツール

Undress AI Tool
脫衣畫像を無料で

Undresser.AI Undress
リアルなヌード寫真を作成する AI 搭載アプリ

AI Clothes Remover
寫真から衣服を削除するオンライン AI ツール。

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中國語版
中國語版、とても使いやすい

ゼンドスタジオ 13.0.1
強(qiáng)力な PHP 統(tǒng)合開発環(huán)境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











GITでWordPressプロジェクトを管理する場合、バージョンコントロールにテーマ、カスタムプラグイン、構(gòu)成ファイルのみを含める必要があります。 .gitignoreファイルをセットアップして、ディレクトリ、キャッシュ、および機(jī)密構(gòu)成のアップロードを無視します。 WebhooksまたはCIツールを使用して自動(dòng)展開を?qū)g現(xiàn)し、データベース処理に注意を払います。共同開発のために2つのブランチポリシー(Main/Develop)を使用します。そうすることで、競合を回避し、セキュリティを確保し、コラボレーションと展開効率を改善できます。

WordPressでは、カスタム記事タイプを追加したり、固定リンク構(gòu)造を変更したりするときは、書き換えルールを手動(dòng)で更新する必要があります。この時(shí)點(diǎn)で、コードを介してflush_rewrite_rules()関數(shù)を呼び出して実裝できます。 1.この関數(shù)は、テーマまたはプラグインのアクティベーションフックに追加して、自動(dòng)的に更新できます。 2。CPTの追加、分類、リンク構(gòu)造の変更など、必要に応じて1回のみ実行します。 3.パフォーマンスに影響を避けるために、頻繁に電話をかけないでください。 4。マルチサイト環(huán)境では、必要に応じて各サイトを個(gè)別に更新します。 5.一部のホスティング環(huán)境は、ルールの保存を制限する場合があります。さらに、[保存]をクリックして「設(shè)定>ピン留めリンク」ページにアクセスすると、自動(dòng)化されていないシナリオに適した更新もトリガーできます。

Gutenbergブロックを作成するための鍵は、その基本構(gòu)造を理解し、フロントエンドリソースとバックエンドリソースを正しく接続することです。 1.開発環(huán)境の準(zhǔn)備:ローカルWordPress、node.js、 @wordpress/scriptsをインストールします。 2。PHPを使用してブロックを登録し、JavaScriptを使用してブロックの編集ロジックを定義します。 3. npmを介してJSファイルを構(gòu)築して変更を行います。 4.問題に遭遇したときにパスとアイコンが正しいかどうかを確認(rèn)するか、リアルタイムのリスニングを使用してビルドを使用して、繰り返し手動(dòng)コンパイルを避けます。これらの手順に従って、シンプルなグーテンバーグブロックを段階的に実裝できます。

応答性のあるWordPressテーマデザインを?qū)g裝するには、まず、HTML5とモバイルファーストメタタグを使用し、header.phpにビューポート設(shè)定を追加して、モバイル端子が正しく表示されるようにし、HTML5構(gòu)造タグでレイアウトを整理します。第二に、CSSメディアクエリを使用して、さまざまな畫面幅でスタイルの適応を?qū)g現(xiàn)し、モバイルファーストの原則に従ってスタイルを書き込み、一般的に使用されるブレークポイントには480px、768px、1024pxが含まれます。第三に、畫像とレイアウトを弾力的に処理し、最大幅を設(shè)定します。畫像に100%を設(shè)定し、固定幅の代わりにFlexBoxまたはグリッドレイアウトを使用します。最後に、ブラウザ開発者ツールと実際のデバイスを介して完全にテストし、パフォーマンスを最適化し、応答を確保する

tosetupredirectsinwordsusitheTheTheTheTheTheTheThe、LocateTethefileNyinyOursite’sRootDirectoryAnddRedireCtRulesabovethe

IntegrateThird-PartyApisIntOwordPress、次のようになります。

usingsmtpforwordpressemailsimprovesdeleverability andReliability comparedtothededefaultphpmail()function.1.smtpauthenticateswithyouremailserver、reducespamplacement.2.somehostsdisablephpmail()、makesmtpn devering

1. WPCRONTROLやAdvancedCronManagerなどのプラグインを使用して、バックグラウンドでCRONイベントを直接表示します。 2.データベースwp_optionsテーブルにアクセスして、Cronキー値を表示することもできます。 3.例外をデバッグする場合、WP-Cronを無効にし、システムクロンタスクを設(shè)定して信頼性を向上させることができます。 4.プラグインまたはコードの追加で、イベントを手動(dòng)で実行または削除することができます。プラグイン管理の使用を優(yōu)先することをお?jiǎng)幛幛筏蓼埂?SQLに精通しているユーザーは、データベース操作を選択し、デバッグ中のトリガーメカニズムと訪問の影響に注意を払うことができます。
