FacebookとTwitterの自動投稿をすばやく設定する方法





親愛なる読者の皆さん、こんにちは!



成功した起業家と初心者の起業家の両方が、サイトで作業を迅速かつ効率的に行う必要があります。 プロセスを自動化するという要望は、サイトにコンテンツを簡単に入力するだけでなく、新しいコンテンツの出現についてターゲットオーディエンスに迅速に通知することでも表されます。



この記事では、最小限の労力で情報(たとえば、記事やサイトのページ)をソーシャルネットワークに投稿する簡単な方法を紹介します。 あなたがサイトにコンテンツを追加している、またはあなたのサイトのユーザーが広告を投稿していることを想像してください(私たちのチームがcarvoy.comサイトで働いた方法に似ています)。 この方法は、情報をターゲットオーディエンスに直接伝えるという点で効果的です。



Facebook自動投稿



このプロセスの実際的な部分から始めることをお勧めします。 まず、広告を追加するときにFacebookの自動投稿を処理します。 Facebookのドキュメントによると、壁にメッセージを公開するために使用するには、アプリケーションを登録する必要があります。 開発者向けの特別ページhttps://developers.facebook.com/appsにアクセスして、Facebookアプリケーションを追加します。







ここではすべてが非常に簡単です。「新しいアプリの作成」ボタンをクリックし、アプリケーションに関する情報(名前、連絡先メール、「ページのアプリ」カテゴリを選択)を入力し、最後に「アプリIDの作成」ボタンをクリックしてテストキャプチャを入力しますアプリケーションが作成されています。







さらに作業を進めるには、次のパラメーターが必要です。

APP IDおよびAPP SECRET







このデータを使用して、このアプリケーションのアクセストークンを取得する必要があります。これにより、ページ管理者に代わって行動できるようになります。 このトークンは、後で公開に使用されます。 アクセストークンの取得方法については、 開発者向けドキュメントのfacebookで詳しく説明されています。 必要なのは、ブラウザで次のリンクを開くことだけです。



https://graph.facebook.com/oauth/access_token?type=client_cred&client_id=<APP_ID>&client_secret=<APP_SECRET>







このリクエストは、公開に使用できるアクセストークンを返します。 次に、次のリクエストで公開する権限を設定します。



https://www.facebook.com/dialog/oauth?client_id=<APP_ID>&client_secret=<APP_SECRET>&redirect_uri=https://carvoy.com&scope=publish_actions&response_type=token







Facebookページの壁に投稿するには、次のURLにHTTP POSTリクエストを送信する必要があります。

https://graph.facebook.com/<PAGE_ID>/feed







次に、受信したアクセストークンパラメータの送信を忘れずに、メッセージ、画像へのリンク、追加したアナウンスのページへのリンク、タイトル、説明を提供する必要があります。



エントリを公開するウォールのページのPAGE_IDを確認するには、wwwページの完全なアドレスをグラフに変更し、アクセストークンでgetを追加します。 たとえば、必要なページのIDを取得するためのリンクを次に示します。



https://graph.facebook.com/Carvoy/?access_token=326799827727254|aRtZuU48IqeJ0s8SY6sVOIfPAiA







応答として、このページのIDを含むJSONオブジェクトを取得します。 このように:



 { "name": "Carvoy", "id": "1629966630552080" }
      
      





自動投稿は、動作クラスが作成される自動投稿モジュールとして実装されます。 リースモデルで使用し、アナウンスメント(リスト)を追加するときにイベントを処理します。 その後、このモジュールを再利用、補足、および変更できます。



モジュールファイル構造:



 … autoposting -- behaviors -- -- AutopostingBehavior.php -- Module.php …
      
      





ファイルモジュール/自動投稿/ Module.php-標準モジュールの初期化。 また、ファイルモジュール/ autoposting / behaviors / AutopostingBehavior.php-新しいレコードを追加するときの動作の説明:



 <?php namespace modules\autoposting\behaviors; use Yii; use yii\base\Behavior; use yii\base\Exception; use yii\db\ActiveRecord; use yii\helpers\Url; use Abraham\TwitterOAuth\TwitterOAuth; /** * Class AutopostingBehavior * @package modules\autoposting\behaviors */ class AutopostingBehavior extends Behavior { /** * @return array */ public function events() { return [ ActiveRecord::EVENT_AFTER_INSERT => 'postToWall', ]; } /** * @param \yii\base\Event $event * * @throws Exception */ public function postToWall( $event ) { $model = $event->sender; if ($model) { $link = Url::to(['/lease/lease/view', 'state'=>$model->state, 'node'=>$model->url ], true); $message = "New listing available on our site - $model->make $model->model $model->year in $model->location. \n" . $link; $this->facebookPost([ 'message' => $message, 'link' => $link, // 'picture' => 'http://thepicturetoinclude.jpg', // link to vehicle picture // 'name' => 'Name of the picture, shown just above it', // 'description' => 'Full description explaining whether the header or the picture' ]); $this->twitterPost($message); } } private function facebookPost ($data) { // need token $data['access_token'] = '326799827727254|aRtZuU48IqeJ0s8SY6sVOIfPAiA'; $page_id = '1629966630552080'; $post_url = 'https://graph.facebook.com/'.$page_id.'/feed'; // init $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $post_url); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // execute and close $return = curl_exec($ch); curl_close($ch); // end return $return; } private function twitterPost ($message) { } }
      
      





twitterPostメソッドについては、Fecebookでの公開が完了し、Twitterでの自動投稿に進むときに少し後で説明します。



モデルの動作を含む配列に自動投稿動作クラスを追加します

/modules/lease/models/frontend/Lease.php



 ... /** * @inheritdoc */ public function behaviors() { return [ 'timestampBehavior' => [ 'class' => yii\behaviors\TimestampBehavior::className(), ], \modules\autoposting\behaviors\AutopostingBehavior::className(), // Autoposting behavior ]; } ...
      
      





TimestampBehaviorの動作をすぐに追加します。 その助けにより、created_atまたはupdated_atモデルフィールドは、レコードの作成または更新中に入力されます。 これで、AutopostingBehaviorクラスで新しいリストを作成するときに、postToWallメソッドが機能します。このメソッドでは、ソーシャルネットワークへの公開のリクエストが送信されます。 これは、AutopostingBehaviorクラスの次の行で定義されます。



 ... ActiveRecord::EVENT_AFTER_INSERT => 'postToWall', ...
      
      





Twitterの自動投稿



Twitterに投稿する場合は、Twitter OAuth REST APIの操作に最も人気のあるPHPライブラリ-twitteroauthを使用します。



composerを使用してインストールします。 次のコマンドを実行するだけです。



php composer.phar require abraham/twitteroauth







Twitter APIを使用するには、アプリケーションを登録する必要もあります。 これを行うには、リンクhttps://apps.twitter.com/にユーザー名とパスワードを入力し、[新しいアプリの作成]ボタンをクリックします。 次に、フォームに記入し、「Twitterアプリケーションを作成」をクリックします。



新しく作成されたアプリケーションの設定に入ります。 ここでは、アクセスレベル項目で「読み取りと書き込み」が選択されていることを確認する必要があります。



[キーとアクセストークン]タブに移動し、新しく作成したアプリケーションの名前をクリックします。 このタブでは、アプリケーションを操作するために4つのキーを使用します。



Consumer Key

Consumer Secret






下のページを下にスクロールして、「アクセストークンの作成」ボタンを確認します。 クリックすると、不足しているキーペアが取得されます。



Access Token

Access Token Secret








以降の手順は非常に簡単です。 twitterPostメソッドを実装しています。 これを行うには、TwitterOAuthクラスをキーとともに使用してTwitterにアクセスします。



 ... private function twitterPost ($message) { $CONSUMER_KEY = 'XYNpO5yj0shMgH43j4lYKMDfH'; $CONSUMER_SECRET = 'VevyEwrhHxabcQgN2S0KuL1i9Gx9CnPXyM2yVLfQ0LlJSZ7BmF'; $OAUTH_TOKEN = '3432829204-6IS6o3hGW3xouvgCso279o4ODU15grLLUy0iWPX'; $OAUTH_SECRET = 'vGzYOtJkcx8PK96YcyUdXM6PtqmhGiVLmHOqCDHM2lkIq'; $connection = new \Abraham\TwitterOAuth\TwitterOAuth($CONSUMER_KEY, $CONSUMER_SECRET, $OAUTH_TOKEN, $OAUTH_SECRET); $statues = $connection->post("statuses/update", array("status" => $message)); return $connection->getLastHttpCode() == 200; } ...
      
      





そのため、わずか数ステップで、2つの一般的なソーシャルネットワークで自動投稿を整理しました。 当然、統合コードはデモンストレーションのみを目的とした情報提供のために提示されています。 それを改善し、各ソーシャルネットワークと個別のクラスに統合することができます。



Facebookのaccess_tokenやpage_idなどの設定、およびTwitterのコンシューマキー、コンシューマシークレット、アクセストークン、アクセストークンシークレットは、common \ config \ params.phpファイルのアプリケーション構成ファイルに移動できます。



 <?php return [ 'adminEmail' => 'admin@example.com', 'supportEmail' => 'support@example.com', 'user.passwordResetTokenExpire' => 3600, 'autoposting' => [ 'twitter' => [ 'consumer_key' => "XYNpO5yj0shMgH43j4lYKMDfH", 'consumer_secret' => "VevyEwrhHxabcQgN2S0KuL1i9Gx9CnPXyM2yVLfQ0LlJSZ7BmF", 'oauth_token' => "3432829204-6IS6o3hGW3xouvgCso279o4ODU15grLLUy0iWPX", 'oauth_secret' => "vGzYOtJkcx8PK96YcyUdXM6PtqmhGiVLmHOqCDHM2lkIq", ], 'facebook' => [ 'page_id' => '1629966630552080', 'page_access_token' => '326799827727254|aRtZuU48IqeJ0s8SY6sVOIfPAiA' ] ] ];
      
      





これで、アプリケーションインスタンスのparamsプロパティを介してこれらのパラメーターにアクセスできます。



$data['access_token'] = Yii::$app->params['autoposting']['facebook']['page_access_token'];







ワーキングドラフトでは、ソーシャルネットワークにリクエストを送信するためのキューを編成する必要があり、公開の同期リクエストを作成する必要はないことに注意してください。 これは、このアプローチを使用してサイトに広告を公開する場合、ユーザーはソーシャルネットワークでの公開のリクエストが完了するのを待ち、サイトへの広告の追加が成功したことに関するフィードバックを受信するという事実によるものです。 これには長い時間がかかる可能性がありますが、ソーシャルネットワークでの公開の瞬間がユーザビリティに悪影響を与えることはありません。



この種のキューを整理して、ソーシャルネットワークでの公開がバックグラウンドで行われ、ユーザーがサイトに広告を追加する時間が長くならないように、私の意見では、キューを整理するのに最適な拡張機能https://github.com/zhuravljov/yii2-待ち行列



この記事および以前の記事で説明したすべてのコードは、 リポジトリで利用できます



ご清聴ありがとうございました!



作成者: greebn9k (Sergey Gribnyak)、pavel -berezhnoy (Pavel Berezhnoy)、 silmarilion (Andrey Khakharev)



All Articles