vkontakte js apiを使用して、rssフィードからのメッセージを半自動で公開する

はじめに


VKontakteを使用してニュースに関する読者への自動通知を読んだ後、この投稿を書くことにしました。 パート4で 、iframeアプリケーションとjs APIを使用して、「アクセストークン」の問題を解決します。
この記事を読んだ後は、誰でも水の上歩き、自分の歯で弾丸を捕まえて、rssフィードからグループまたはユーザーの壁に投稿を公開できるiframeアプリケーションを作成できます。


コードと手紙


仕事のために、データベースに最も単純なテーブルを作成しました。
DROP TABLE IF EXISTS `feedname`;
CREATE TABLE `feedname` (
`id` int (10) NOT NULL AUTO_INCREMENT,
`title` varchar (512) NOT NULL ,
`imglink` varchar (512) NOT NULL ,
`status` tinyint(3) DEFAULT NULL ,
`postid` varchar (13) NOT NULL ,
PRIMARY KEY (`id`),
UNIQUE KEY `postid` (`postid`)
) ENGINE=MyISAM AUTO_INCREMENT=71 DEFAULT CHARSET=utf8;


* This source code was highlighted with Source Code Highlighter .

誰がベースを満たすのに注意を払う必要があるかわかりません。 例として9gag.comを使用しソースを投稿します。


アプリケーションのiframe部分には、フィールド「id」、「title」、「imglink」、および「status」が必要です。


それでは、vkontakteでの作業に移りましょう。
まず、iframeアプリケーションを作成し、壁を操作するために必要なアクセス権を設定します。


指定されたアドレスにアプリケーションを配置することにより、vkontakte javascript apiとの対話を開始できます。
必要なのは、ライブラリ接続とアプリケーションの初期化だけです。
<script src= "http://vkontakte.ru/js/api/xd_connection.js?2" type= "text/javascript" ></script>
VK.init( function () {
});


* This source code was highlighted with Source Code Highlighter .

最後に、すべてのvkontakte API メソッドが利用可能になりました。

wallPost関数(以下のコード)はidパラメーターを受け取り、メッセージパラメーターと画像へのリンクを取得します。
壁に投稿する順序は次のようになります。
  1. photos.getWallUploadServerメソッド:応答として、ロードされたイメージのPOSTリクエストのリンクを取得します
  2. 前の段落のリンクを使用してPOSTリクエストを送信します。 応答として、次のものを受け取ります。
    hash: "2bd5fe4bbcd3956f8f34c3a279cc4673"
    photo: "f8005a7e14:y|441x750"
    server: "301615"

  3. コールバックのパラメーターを使用して、photos.saveWallPhotoメソッドを呼び出します。 応答には、ダウンロードしたファイルに関する情報が含まれています
    aid: -14
    created: 1327862486
    height: 750
    id: "photo6216848_276115383"
    owner_id: 6216848
    pid: 276115383
    src: "http://cs301615.vk.com/u6216848/-14/m_1919d67e.jpg"
    src_big: "http://cs301615.vk.com/u6216848/-14/x_ea814cdf.jpg"
    src_small: "http://cs301615.vk.com/u6216848/-14/s_411e9235.jpg"
    src_xbig: "http://cs301615.vk.com/u6216848/-14/y_704eef9d.jpg"
    width: 441

  4. そして最後に壁に投稿する-wall.postメソッド


次に、上記の手順の実際の例を示します。グループウォールに投稿を投稿します。
function wallPost(id) {
title = $( "[titleid=" + id + "]" ).html();
imglink = $( "[imgid=" + id + "]" ).children( "img" ).attr( "src" );
VK.api( 'photos.getWallUploadServer' , {
gid: '%group_id%'
}, function (data) {
if (data.response) {
$.post( 'index.php' , {
action: 'upload' ,
upload_url: data.response.upload_url,
imglink: imglink
}, function (json) {
VK.api( "photos.saveWallPhoto" , {
server: json.server,
photo: json.photo,
hash: json.hash,
gid: '%group_id%'
}, function (data) {
VK.api( 'wall.post' , {
owner_id: '-%group_id%' ,
from_group: '1' ,
message: title,
attachments: data.response[ '0' ].id
}, function (data) {
if (data.response) {
$.post( "index.php" , {
action: "hide" ,
id: id
});
window.location.reload();
}
});
});
}, 'json' );

}
});
}


* This source code was highlighted with Source Code Highlighter .


これまでのところ、添付ファイルの画像がメッセージの公開リクエストで表示されない理由、およびレコードがグループページではなく独自のページで公開されるとメッセージに表示される理由を理解することはできませんでした-それはすべてを正しく公開します。



ホラーコード添付

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

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


All Articles