Oauth、Twitter、WordPress HTTP APIおよびあなた
キーテイクアウト
- OAuthは、保護されたデータと対話するためのより安全な方法を提供する認証プロトコルであり、パスワードを共有せずにユーザーに代わってアプリケーションを行うことができます。 Twitterは、HTTPリクエストをAPIに承認するためにOAuthを使用しています。 チュートリアルでは、Twitterを消費するためのWordPress HTTP APIを搭載したPHPクラスを作成する方法に関するステップバイステップガイドを提供します。これには、Twitterのキーおよびアクセストークンのアプリケーション管理センターにアプリケーションの作成、PHPクラスのコーディング、OAuth認証を使用してTwitterにHTTPリクエストを作成することが含まれます。
- チュートリアルで作成されたPHPクラスは、WordPressプラグインのコンテキスト内で使用してTwitterデータにアクセスできます。提供されている例には、最近のツイートの取得とプロファイルの説明の更新が含まれます。 チュートリアルは、OAuthを正しく構成し、展開エラーを避けるために正しいAPIキーを使用することの重要性を強調しています。また、不正アクセスを防ぐためにOAuthトークンを保護する必要性を強調しています。
- 以前のチュートリアルでは、WordPress HTTP APIに深く飛び込みました。次のプラグインを構築して、その使用法の実世界の例を示すために、ドメインWHOISとソーシャルデータウィジェットを示しました。 WordPressログイン、登録、コメント用のCaptcha Protection Plugin;使い捨てのメールアドレスのサインアップを停止するためのプラグイン。
- このチュートリアルでは、OAuthの世界に紹介されます。TwitterがHTTPリクエストをAPIに承認するためにそれを使用し、最後にTwitterを消費するときにプラグインが利用できるWordPress HTTP APIを搭載したPHPクラスを構築する方法を紹介します。 。
OAuthは、保護されたデータを公開および対話するためのシンプルで安全で安全な方法を提供する認証プロトコルです。これにより、ユーザーはパスワードを共有せずに自分に代わって行動するアプリケーションを承認できます。
ユーザーに代わって保護されたデータを保存している場合、アクセスするためにパスワードをウェブ上に広めてはいけません。代わりに、OAUTHを使用して、アカウントの資格情報を保護しながら、ユーザーがデータにアクセスできるようにすることができます。 PHPクラスのコーディング
PHPクラスをコーディングするときに、OAuth認証を使用して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>
プライベートメソッド_build_signature_base_string()は、次の引数を受け入れて署名ベース文字列を作成します:リクエストURL、リクエスト方法またはHTTP動詞、およびOAuth資格情報(消費者キーとシークレット;アクセストークンと秘密;それは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アプリケーション消費者キー
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>
“ hmac-sha1”
- oauth_token - アプリケーションoauthトークン。
- oauth_timestamp - time() で作成された現在のタイムスタンプ
- oauth_version - Twitterはバージョン1.0 を使用します oauth_signature - _generate_oauth_signature() によって生成されたoauth署名
- リクエスト方法またはhttp動詞も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プラグインのコンテキスト内で使用する必要があります。ワードプレスHTTP APIが機能するために必要なため、スタンドアロンクラスとしては機能しません。
最新のツイートのリストまたはコレクションを取得するには、以下のガイドに従ってください。 注: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とメソッドを設定します。
<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>
クレジットとリソース
このクラスの構造とコードは、ジェームズ・マリソンの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>
oauth認証は
に陥りました
Twitter OAuthがシナリオコンテキストでどのように機能するかTwitterのドキュメント
- php oauthサーバーの作成
- ietf rfc
- 結論
- この記事では、WordPress HTTP APIを搭載したHTTPクライアントクラスを使用してOAUTHとTwitterを消費する方法について学びました。前述のように、このクラスは、WordPress HTTP APIを使用するため、WordPressプラグイン内で使用する必要があります。このPHPクラスは、たとえば最近のツイートウィジェットなど、建物に役立つことがあります。 コードはGitHubで利用できます。お気軽にフォークしたり、プルリクエストを送信したりすることもできます。
- 私の今後のチュートリアルに遅れずについていくために、WordPressチャンネルを購読してください。
oauth、twitter、およびwordpress http api
に関するよくある質問
WordPressサイトでOAUTH2をセットアップするにはどうすればよいですか?WordPressサイトでOAUTH2のセットアップには、OAUTH2プラグインのインストールと構成が含まれます。 WordPressプラグインディレクトリで利用可能ないくつかのプラグインから選択できます。プラグインをインストールしたら、クライアントIDやクライアントSecretなど、OAUTH2プロバイダーの詳細でそれを構成する必要があります。また、プロバイダーの要件に応じて、リダイレクトURLとスコープをセットアップする必要があります。安全な委任されたアクセス。これにより、ユーザーはパスワードを共有せずにTwitterアカウントへのサードパーティのアプリケーションアクセスを許可できます。これは、アプリケーションがお客様に代わってTwitterと対話し、ツイート、タイムラインの読み取り、新しいユーザーのフォローなどのアクションを実行できることを意味します。 TwitterのAPIの問題は、アプリケーションが正しく構成され、正しいAPIキーを使用していることを確認することで修正できます。また、アプリケーションがTwitterのレート制限を超えていないことを確認する必要があります。まだ問題が発生している場合は、さらなる支援のためにTwitterの開発者サポートに連絡する価値があるかもしれません。以上がOauth、Twitter、WordPress HTTP APIおよびあなたの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

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

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

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

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

ホットトピック











最近、ユーザーがお気に入りの投稿をパーソナライズされたライブラリに保存できるようにすることで、ユーザー向けのパーソナライズされたエクスペリエンスを作成する方法を示しました。一部の場所で名前を使用することで、パーソナライズされた結果を別のレベルに引き上げることができます(つまり、ウェルカム画面)。幸いなことに、WordPressにより、ユーザーのログインに関する情報を簡単に入手できます。この記事では、現在ログインしているユーザーに関連する情報を取得する方法を紹介します。 get_currentuserinfo()を使用します。 関数。これは、テーマ(ヘッダー、フッター、サイドバー、ページテンプレートなど)のどこでも使用できます。それが機能するためには、ユーザーをログインする必要があります。したがって、使用する必要があります

WordPressの記事リストを調整するには4つの方法があります。テーマオプションを使用し、プラグイン(投稿タイプの注文、WP投稿リスト、ボックスのものなど)を使用し、コード(functions.phpファイルに設定を追加)を使用するか、WordPressデータベースを直接変更します。

ブログは、人々が自分の意見、意見、意見をオンラインで表現するための理想的なプラットフォームです。多くの初心者は自分のウェブサイトを構築することに熱心ですが、技術的な障壁やコストの問題を心配することをためらっています。ただし、プラットフォームが初心者の能力とニーズを満たすために進化し続けるにつれて、今まで以上に容易になり始めています。 この記事では、テーマの選択からプラグインの使用まで、セキュリティとパフォーマンスを向上させ、独自のWebサイトを簡単に作成できるように、WordPressブログを構築する方法を段階的に導きます。 ブログのトピックと方向を選択してください ドメイン名を購入したり、ホストを登録する前に、カバーする予定のトピックを特定することをお勧めします。個人的なウェブサイトは、旅行、料理、製品のレビュー、音楽、またはあなたの興味を引き起こす趣味を中心に展開できます。あなたが本当に興味を持っている領域に焦点を当てることは継続的な執筆を奨励することができます

親カテゴリアーカイブページに子カテゴリを表示する方法を知りたいですか?分類アーカイブページをカスタマイズするときは、訪問者にとってより便利にするためにこれを行う必要がある場合があります。この記事では、親カテゴリアーカイブページに子カテゴリを簡単に表示する方法を示します。サブカテゴリが親カテゴリアーカイブページに表示されるのはなぜですか?親カテゴリアーカイブページにすべての子カテゴリを表示することにより、訪問者にとってより一般的で便利になります。たとえば、本に関するWordPressのブログを実行し、「テーマ」と呼ばれる分類法を持っている場合、「小説」、「ノンフィクション」などのサブ課題を追加して、読者ができるようにすることができます。

過去には、拡張後のプラグインを使用してWordPressの投稿を期限切れにする方法を共有してきました。さて、Activity List Webサイトを作成するとき、このプラグインは非常に便利であることがわかりました。期限切れのアクティビティリストを簡単に削除できます。第二に、このプラグインのおかげで、有効期限後の日付までに投稿を並べ替えることも非常に簡単です。この記事では、WordPressの有効期限後の日付で投稿を並べ替える方法を紹介します。プラグインの変更を反映してカスタムフィールド名を変更するためのコードを更新しました。コメントで私たちに知らせてくれたTajimに感謝します。特定のプロジェクトでは、イベントをカスタムポストタイプとして使用します。今

WordPressホストを使用してWebサイトを構築するには、次のようにする必要があります。信頼できるホスティングプロバイダーを選択します。ドメイン名を購入します。 WordPressホスティングアカウントを設定します。トピックを選択します。ページと記事を追加します。プラグインをインストールします。ウェブサイトをカスタマイズします。あなたのウェブサイトを公開します。

WordPress Webサイトやソーシャルメディアアカウントを自動化する方法をお探しですか? 自動化を使用すると、WordPressのブログ投稿やFacebook、Twitter、LinkedIn、Instagramなどで自動的に共有できます。 この記事では、IFTTT、Zapier、およびUncanny Automatorを使用してWordPressとソーシャルメディアを簡単に自動化する方法を紹介します。 WordPressとソーシャルメディアを自動化する理由 WordPreを自動化します

ユーザーの1人が、フッターにクエリの数とページの読み込み時間を表示する方法を他のWebサイトに尋ねました。これをウェブサイトのフッターでよく見ることがよくあり、「1.248秒で64クエリ」のようなものを表示する場合があります。この記事では、WordPressにクエリの数とページの読み込み時間を表示する方法を紹介します。テーマファイル(たとえば、footer.php)で好きな場所に次のコードを貼り付けます。クエリエシン
