実際、すべてが非常にシンプルであることが判明し、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ユーザーページに接続する必要があります。 接続は次のとおりです。
- アプリケーションのconnect.phpページに特別な方法でリンクを作成します(以下を参照)。
- ブラウザを開き、メッセージを公開するウォールのユーザーの下でVkontakteにログインします。 これは、アプリケーションを登録したユーザーと同じである可能性があります。
- connect.phpページに移動してリンクをクリックし、Vkontakteページに移動します。
- Vkontakteページで([許可]ボタンをクリックして)アプリケーションを承認します。その後、連絡先はブラウザーをconnect.phpページにリダイレクトし、URLを介してコードパラメーターを渡します。
- 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が必要ですというエラーを返し、パブリケーションは一時的に中断されます。
スタンドアロンアプリケーションの結果は次のようになります
そのため、すべてが非常にシンプルであることが判明し、エクスポートスクリプトをクラウンに配置しました。コンテンツマネージャーは、エントリを手動で公開する必要はありません。