PHPを使用したVkontakte壁への投稿

Vkontakteページの壁にサイト資料の自動発行を作成するタスクを受け取った後、この一見関連するトピックのレシピが比較的少ないことがわかりました。



実際、すべてが非常にシンプルであることが判明し、APIドキュメントを読むことで時間を節約できることがよくあります。







PHPスクリプトから連絡先APIにアクセスするには、 開発者ページの[サイトに接続]ボタンをクリックして開始する必要があります。



次のフォームで、「スタンドアロンアプリケーション」オプションを選択し、自動アプリなどの名前を入力します。 「アプリケーションの接続」ボタンをクリックした後、コードを入力する必要があります。 ログインしているユーザープロファイルで指定されたモバイル上のSMSの形で1分以内に届きます。 さて、これでスタンドアロンアプリケーションが作成されました。これに関する情報は、[設定]リンクをクリックして[アプリケーション]ページで将来編集できます。



新しいページで、実際のWebサイトアドレス、ベースドメインを入力し、変更を保存することを忘れないでください。 これらのフィールドを空のままにすると、連絡先は「自動」投稿を公開しません。





これで、アプリケーションが作成された後、アプリケーション構成の2つの重要な値を取得できます。 安全なキーと作業に必要なアプリケーションIDです。



プロジェクトにアプリケーションフォルダー(my_folder /など)を作成します。



また、便宜上、スタンドアロンアプリケーションで構成される3つのファイルを作成します。



onfig.php-保護されたキーとアプリケーションID、および投稿を公開する壁のユーザーIDを配置するプラグイン構成。

connect.phpは、アプリケーションをユーザーページに接続するための標準手順用のシンプルなページです。

export.php-資料を直接投稿するスクリプト。



これは、構成ファイルの複雑なコードのようになります。



<?php *  standalone   * ID         ,    */ $vkontakteApplicationId = '12345'; $vkontakteKey ='      '; // ID ,      $vkontakteUserId='12345';
      
      







次に、OAuth 2.0プロトコルに基づく認証メカニズムを使用して、アプリケーションをVkontakteユーザーページに接続する必要があります。 接続は次のとおりです。

  1. アプリケーションのconnect.phpページに特別な方法でリンクを作成します(以下を参照)。
  2. ブラウザを開き、メッセージを公開するウォールのユーザーの下でVkontakteにログインします。 これは、アプリケーションを登録したユーザーと同じである可能性があります。
  3. connect.phpページに移動してリンクをクリックし、Vkontakteページに移動します。
  4. Vkontakteページで([許可]ボタンをクリックして)アプリケーションを承認します。その後、連絡先はブラウザーをconnect.phpページにリダイレクトし、URLを介してコードパラメーターを渡します。
  5. codeパラメーターを使用して、httpsを介して連絡先にリクエストを行い、access_tokenを取得します。これはテキストファイルに保存するトークンで、たとえば、壁にメッセージを投稿するときに使用します。 データ転送中にアプリケーションを承認するための公開プロセスでは、アプリケーションの秘密キーとID、およびコードパラメーターは必要なくなりました。 受信したトークンのみを使用します。




次に、connect.phpページの簡単なバージョンを示します。

 <?php require 'config.php'; if (!empty($_GET['code'])){ //     $vkontakteCode=$_GET['code']; //   $sUrl = "https://api.vkontakte.ru/oauth/access_token?client_id=$vkontakteApplicationId&client_secret=$vkontakteKey&code=$vkontakteCode"; //  ,    ,     JSON $oResponce = json_decode(file_get_contents($sUrl)); $fp = fopen('token.txt', 'w'); fputs($fp, $oResponce->access_token); fclose($fp); } ?> <a href="http://api.vkontakte.ru/oauth/authorize?client_id=<?=$vkontakteApplicationId?>&scope=offline,wall&redirect_uri=http://<?=$sYourDomain?>/my_folder/connect.php&response_type=code"> </a>
      
      







json_decode(file_get_contents( 'https:// ...'))が機能するためには、php 5.xcバージョンのopensslサポートがサーバーにインストールされている必要があります。



リンク「authorization Vkontakte」の要求行は、次のパラメーターから組み立てられます。

client_id -VkontakteアプリケーションのID。構成ファイルに既に登録されています。

scope-要求されたアプリケーション許可 。コンマでリストできます。 この場合、アプリケーションは、いつでも(オフラインで)サードパーティのサーバーからAPIへのアクセスを要求します。壁-壁を操作する方法へのアクセス。

redirect_uri -codeパラメータが渡されるconnect.php接続ページへの絶対リンク。

responce_type-コード。



これで、access_tokenを受け取った後、壁に資料の公開を開始できます。



 <?php require 'config.php'; $vkontakteAccessToken = file_get_contents('token.txt'); /** …......  ,    ,      */ //      $sRequest = "https://api.vkontakte.ru/method/wall.post?owner_id=$vkontakteUserId=&access_token=$vkontakteAccessToken&message=$text&attachment=$link"; //    $oResponce = json_decode(file_get_contents($sRequest));
      
      







スクリプトを実行し、どこでも間違いを犯していない場合、次の結果が得られます。





同様に、他のAPIメソッドを使用するためのリクエストを生成できます。 クエリ文字列は次のように構築されます。

api.vkontakte.ru/method +メソッド名+連絡先のユーザーID +以前に受信したトークン+対応するAPIメソッドのパラメーターのリスト。



与えられた例では、必須パラメーターはメッセージです-これは実際にはVKontakteウォールで公開されたテキストです。 テキストはUTF-8エンコードである必要があります。Windows-1251をまだ使用している場合は、次の変換を使用します。



 $text = urlencode(iconv( 'windows-1251', 'utf-8' , $text));
      
      







テキストとリンクはurlクエリ文字列の一部なので、urlencodeエンコーディングを使用することを忘れないでください。



リンクなしでテキストのみを投稿したい場合、成功した場合、サーバーはこの種類の応答を送信します

{「応答」:{「post_id」:1}}



壁のメッセージの横にリンクを公開するには、クエリ行にattachment = $ linkを追加する必要があります。$ linkは、サイト上の既存のページへの絶対リンクです。 この場合、レコードは(数秒で、1秒未満で)延期され、フォームの応答

{「応答」:{「処理」:1}}



wall.postメソッドの詳細については、ドキュメントページをご覧ください



サーバーにリクエストを頻繁に送信しないでください。 ほとんどの場合、1分間に1つのリクエストという制限で十分です。それ以外の場合、サーバーはCaptchaが必要ですというエラーを返し、パブリケーションは一時的に中断されます。



スタンドアロンアプリケーションの結果は次のようになります



そのため、すべてが非常にシンプルであることが判明し、エクスポートスクリプトをクラウンに配置しました。コンテンツマネージャーは、エントリを手動で公開する必要はありません。



All Articles