最初の部分では、壁に自動的に投稿する方法を学びました。本日
最初の部分の後、私は多数のメッセージを受け取りました。そのほとんどは、記事で自分の壁に公開する可能性を実証したという事実に捧げられましたが、グループの壁または公式ページには自動公開を表示しませんでした。 したがって、このために渡す必要があるパラメーターから始めます。
公式ページ
ニュースを投稿するには、ページの管理者のメンバーである必要があります。 単純なメッセージを公開するときにal_wall.phpに渡される必要なパラメーターを検討してください。
act => 'post', 'delete' al => 1 facebook_export => '' status_export => '' friends_only => '' hash => '' message => '' note_title => '' official => '' to_id => '' type => 'all' media => '' media_type => 'photo'
- actパラメーターでは、必要なアクションを渡します-メッセージをポストする 'post'、またはメッセージを削除する 'delete'。 さらに、削除するときは、ページのIDと壁のメッセージのシリアル番号を含むパラメーター「post」も渡す必要があります(例:11111_32;)。
- facebook_exportおよびstatus_exportパラメーターは、ページにリンクされている場合、FacebookおよびTwitterサービスへのエクスポートに使用されます。
- ハッシュパラメーターはすでによく知られています。post_hashと呼ばれるパラメーターを使用して、ブロック内のページまたはグループを開くときに見つけることができます。
- note_titleパラメーターが省略されている、つまり、ノートが作成されないことに注意してください;代わりに、レコードが許容サイズを超えた場合、レコードは切り捨てられます。
- to_idでは、オフィシャルページまたはグループのIDをマイナス記号付きで渡す価値があります(例: '-11111';)。
- メディアとmedia_typeを考慮する必要があります。最初は目的のオブジェクトへの内部リンクを渡し、2番目ではそのタイプを渡します。 たとえば、media => '1111_1213232213'、media_type => 'photo'。 この場合、指定された写真がレコードに添付されます。 タイプは「オーディオ」、「ビデオ」にすることもできます。 「共有」のタイプを渡し、写真への「メディア」ポインタで渡すと、メッセージリンクでこの写真がツールチップに表示されます。 リンクについて知っている3つのパラメーター(URL、タイトル、説明)を追加することを忘れないでください。
悲しいかな、これまでのところ、Habrahabr VKページで行われたように、メッセージリンクと一緒にメッセージ写真を公開する方法を見つけていません。
写真をアップロード
実際、写真をアップロードするとき、主なことはプロキシを忘れないことであり、すべてが非常に簡単です。 そのため、写真をアップロードするには、外部リンクを公開するように設計されたファイルshare.phpを使用します。 以下に、渡す必要があるPOSTパラメーターの例を示します。
act => a_photo url => image => extra =>
urlパラメーターでは、リンクをimageパラメーターで渡し、目的のイメージへのリンクを渡します。余分なパラメーターは無視できます。 最後の部分で行ったように、CURLを使用する場合は、次のことを忘れないでください。
curl_setopt($ch, CURLOPT_REFERER, 'http://vkontakte.ru/share.php'); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
POST要求を送信した後、share.phpは要求を302エラーを返し、Locationパラメーターを渡すことで、必要なサーバーと必要なパラメーターでupload.phpにリダイレクトするため、2番目のパラメーターが必要です。 順番に、upload.phpはリクエストをcomplete.phpにリダイレクトし、成功に応じて、エラーまたは必要な結果を返します。
エラーのあるオプション:
<script type="text/javascript"> document.domain = location.host.toString().match(/[a-zA-Z]*\.[a-zA-Z]*$/)[0]; parent.onUploadFail(0, ' '); </script>
これは、写真へのリンクが間違っているか無効である可能性が高いことを意味します。 必要なオプションは次のようになります。
<script type="text/javascript"> document.domain = location.host.toString().match(/[a-zA-Z]*\.[a-zA-Z]*$/)[0]; parent.onUploadDone(0, {"user_id":1234567,"photo_id":235889241}); </script>
これは、壁に写真を配置するときに送信する必要のある同じphoto_id、この場合は完全な合成ID:1234567_235889241です。 それは単に真実ではないのですか?
アップロードされた写真への直接パスを取得するには、al_photo.phpにリクエストを送信する必要があります。その操作はまだ完全にはわかりません。特に、リクエストを確認するために必要なハッシュがまだ明確ではありません。 誰かが理解した場合-私に知らせてください:)。
上記のようにal_wall.phpだけでなくshare.phpを介してツールチップに画像付きのリンクを配置できることは注目に値します。これには、多数のパラメーターを指定してshare.phpに再度リクエストを送信する必要があります。 問題が発生する可能性がある場合はコメントを投稿します。
act: 'a_submit' // hash: shareHash // onDomReady, share.php , window.shareHash title: // url: // share_title: // share_text: // share_comment: // image_url: // , onUploadFail photo_owner_id: // id photo_id: // id, privacy_note: 0 // 0 privacy_notecomm: 0 // 0 to_status: 1 // 1, status_export: // to_note: // , 1,
一般に、share.phpを介して、ビデオとオーディオを公開し、extraパラメーターとextra_dataパラメーターを使用してサーバーにアップロードできますが、これは緊急のニーズとは思われません。
これまでのところこれで十分だと思います。リンクと写真を1つのメッセージにまとめる方法を見つけたら、その方法を書きます。 または、これらの機能がグループおよび公式ページ用に開かれることを期待します。 公式ページのVKontakteインターフェース経由で写真をアップロードする場合、photo_idにはタイプ「[-id page] _ [photo_number]」が割り当てられ、写真を表示する場合、作成者はページまたはグループになります。
パラメータをshare.phpではなく直接upload.phpに転送する場合、この効果はスクリプトでも実現できますが、この場合、2つの異なるハッシュパラメーターを含むパラメーターの束を知る必要があるため、この方法は考慮しませんになりました。
ほとんどの質問は同じであり、毎回同じことを説明する必要があるため、個人のメールではなく、コメントでトピックに関する質問をする別のリクエスト。

UPD :コメントのリクエストで、簡単なクラスと使用例をスケッチしました。
こちらをご覧ください: github.com/xbreaker/vk.wallpost