サイトのVKontakteコメントウィジェットとサーバー上のコメント数の保存

時代に合わせて、私はVKontakteコメントウィジェットを自分のWebサイトに投稿することにしました。 少しの忍耐、グーグルとドキュメントは結果を達成するのに十分です。 ウィジェット自体の投稿は難しくありません。VKontakteは、サイトのコードを生成するシンプルなインターフェイスを提供します。 いくつかの場所でコメントの数を表示したかった。 ここで、通常起こるように、困難が生じました。詳細には悪魔がいます。 ドキュメントに記載されていない内容を整理してみます。


1.VKontakte Webサイトの登録


ウィジェット自体を配置するには、まずサイトをVkontakteアプリケーションとして登録する必要があります>>こちら 。 フォームに入力し、SMSを取得し、フォームに再度入力します 。アプリケーションを登録した結果、 2つのキーを取得する必要があります

api_id - VKontakteアプリケーションとしてのサイトの識別子

api_secretは、アプリケーションの所有者のみが知っている秘密キーです。 攻撃者によって置換/破損/歪曲される可能性のあるデータを暗号化し、VKontakte側でこのデータの電子署名を生成します。有効性を確認するために必要です。 はい、将来的にも必要になります。

PS:Vkontakteは、コメントウィジェットのアプリケーションを登録する簡単な方法を提供しますが、この場合、api_secretキーを取得することはできません(少なくとも1時間は取得する方法を探していましたが...見つかりませんでした)。これはコメントの数を保存する場合に必要です。 したがって、怠けてアプリケーションを作成しないでください。

2.ウィジェットを作成する


ウィジェット自体を作成します。ウィジェットのドキュメントを複製したくありません。最終的には次のような結果になるはずです。
VK.init({apiId: %_api_id%, onlyWidgets: true}); VK.Widgets.Comments("vk_comments", {limit: 10, width: "1000", attach: "*", onChange: addCommentCallback}, "post_<?php echo $post['id']?>"); 


onChangeとは何ですか? 3番目のパラメーターはコメントのこのウィジェット(ブロック)のIDです。idとして指定しない場合、location.href(このページへのリンク)からのmd5ハッシュが使用されます。 いくつかの異なるリンクが1つの要素を指しているため、これは私には不向きでした。 この段階では、ウィジェットはすでに機能しているので、コメントの数の表示を把握する必要があります。

3.コメント数に関するデータのサーバーへの転送


明らかに、最も成功するオプションは、VK APIを介してコメントの数を取得するとサイトの速度が低下しすぎるため、コメント自体を保存しない場合でも、データベースにコメントの数を保存することです。 コメントの数をデータテーブルの別の列に保存します。 唯一の質問は、データベースで値を更新された状態に保ち、非同期を回避する方法です。
コメントウィジェットAPIにはonChangeパラメーターがあります。 onChangeパラメータに含まれる関数は、コメントが削除/作成されるたびに呼び出されます。 onChangeコールバック関数は、4つのパラメーターで呼び出されます

num-コメントの数
last_comment-最後のコメント
日付 -日付
サイン -キー

これが必要なものです。 次に、addCommentCallback関数自体を記述します。これは、上記の4つのパラメーターすべてとレコードのIDをサーバーに渡し、ajaxリクエストを作成します。 私が得たものは次のとおりです(jqueryを使用):

 function addCommentCallback(num, last_comment, date, sign){ $.post("%____%",{ type: 'vkontakte', num: num, last_comment: last_comment, date: date, sign: sign, id: "<?php echo $this->post['id']?>" }); } 


あなたがあなたのサイトをあなたが好きなものを書くことができるフェンスに変えたいとは思わない、そしていつの日かコメントの数の代わりに、あなたとあなたのサイトについて3文字の言葉やつまらない意見を見つける。 したがって、コメントの数を保存する前に、ユーザーからのデータが信頼できることを確認します。

4.データ検証


ここで、アプリケーションの登録時に受け取ったapi_secretキーが必要です。 個人的に、単純化してサイトを登録した場合、このコードを取得する方法が見つかりませんでした。

リクエストを処理し、データベースにコメントの数を書き込むphpコード:
 $post = $_POST; if (!isset($post['num'])){ $error = '  '; } else{ $apiSecret = %_API_SECRET%;//(,       ) $hash = md5($apiSecret.$post['date'].$post['num'].$post['last_comment']);//  ,    ,   md5 -    api_secret, date, num, last_comment: if (strcmp($hash, $post['sign']) == 0){//    //     } else{ $error = '  '; } } 

以上です! 必要に応じて、データベースにコメントの数だけでなく、コメント自体も保存できます。 この記事が有用であり、無駄に時間を無駄にしないことを願っています。

Source: https://habr.com/ru/post/J130260/


All Articles