ホームページ > バックエンド開発 > PHPチュートリアル > Sina Weibo オープン プラットフォーム API を使用して Web サイトのコンテンツを自分の Weibo に同期する際の問題

Sina Weibo オープン プラットフォーム API を使用して Web サイトのコンテンツを自分の Weibo に同期する際の問題

WBOY
リリース: 2016-06-23 13:30:24
オリジナル
1493 人が閲覧しました


WordPress Webサイトは記事を投稿するときにSina Weiboに同期できると言われています。同じ方法に基づいてphpコードのテストを書きたいと思います。以下の内容は http://kinggoo.com/wpsycnweibo.htm より引用

Weibo に同期するには、プラグイン、関連ブログ、プラグイン以外の Weibo インターフェースの大きく 3 つの方法があります
1 つ目は、 Baidu で直接検索する
2 番目の方法は、Sina がブログを関連付けるオプションをキャンセルしましたが、機能はキャンセルされていないため、以下のアドレスを要求して設定することができます。3 番目の方法は Sina のを使用する必要があります。
1) Sina Weibo オープン プラットフォームにアクセスして、サイト内アプリケーションを作成します。審査に合格したかどうかは関係ありません。ただし、合格した場合は、Weibo に表示されます。 KingGoo Technology Blog の画像など、特定のアプリケーションから作成する方法は、Google の Baidu 検索で確認できます。非常に簡単です (ただし、レビューに合格したことがなく、それでもレビューに合格したい場合は、私が作成できます)。有料のヘルプを提供してください~)、アプリケーションを作成した後、以下のアプリケーション アプリケーションの App Key を使用する必要があります
2) テーマの function.php ファイルの最後に次のコードを追加します

// 微博同步function post_to_sina_weibo($post_ID) {  if( wp_is_post_revision($post_ID) ) return;    $get_post_info = get_post($post_ID);    $get_post_centent = get_post($post_ID)->post_content;     //去掉文章内的html编码的空格、换行、tab等符号(如果你文章的编码格式是这样子,可以将下面的"//"去掉即开启此功能)    //$get_post_centent = str_replace("\t", " ", str_replace("\n", " ", str_replace(" ", " ", $get_post_centent)));    $get_post_title = get_post($post_ID)->post_title;  if ( $get_post_info->post_status == 'publish' && $_POST['original_post_status'] != 'publish' ) {    $request = new WP_Http;    $status = '【' . strip_tags( $get_post_title ) . '】 ' . mb_strimwidth(strip_tags( apply_filters('the_content', $get_post_centent)),0, 132,'...') . ' 全文地址:' . get_permalink($post_ID) ;    $api_url = 'https://api.weibo.com/2/statuses/update.json';    $body = array( 'status' => $status, 'source'=>'4135063399');    $headers = array( 'Authorization' => 'Basic ' . '1fFjYc3uQHZpcF32fS5jb146MxFeY19DYF53aWfzNA==' );	/*	如果你使用改方法,请注释掉上面$headers = array( 'Authorization' => 'Basic ' . '1fFjYc3uQHZpcF32fS5jb146MxFeY19DYF53aWfzNA==' );	换成如下代码	//你的新浪微博登陆名	$username = '' ;	//你的新浪微博登陆密码	$password = '' ;	$headers = array( 'Authorization' => 'Basic ' .  base64_encode('$username:$password'));	*/	    $result = $request->post( $api_url , array( 'body' => $body, 'headers' => $headers ) );    }}add_action('publish_post', 'post_to_sina_weibo', 0);
ログイン後にコピー

この記事WordPress に付属の WP_Http クラスを使用する必要がありますが、github で代替クラスを見つけました: https://github.com/duoshuo/easy-http
このクラスの説明: EasyHttp は、さまざまな php 環境を無視するのに役立つ php クラスです条件を満たして http リクエストを無差別に送信します。現在の PHP 環境がcurl/fsockopen/fopenをサポートしているかどうかに注意を払う必要はなくなり、EasyHttp は http リクエストを行うための最も適切な方法を自動的に選択します。 EasyHttp は WordPress の WP_Http クラスから派生し、他の WordPress 機能への依存関係をすべて削除し、異なるファイルに分割し、いくつかの簡素化を行っています。
上記の内容を基に、PHP コード 1.php を記述します:
<?phprequire ('EasyHttp.php');require ('EasyHttp/Curl.php');require ('EasyHttp/Cookie.php');require ('EasyHttp/Encoding.php');require ('EasyHttp/Fsockopen.php');require ('EasyHttp/Proxy.php');require ('EasyHttp/Streams.php');$r = new EasyHttp();$status = 'ceshi444bbbb' ;$api_url = 'https://api.weibo.com/2/statuses/update.json';    $body = array( 'status' => $status, 'source'=>'这里appkey');$headers = array( 'Authorization' => 'Basic ' .'这里64位编码后的用户名和密码' );$result = $r->post( $api_url , array('body' => $body, 'headers' => $headers ) );print_r($result);?>
ログイン後にコピー


ブラウザが 1.php にアクセスすると、次の内容が返されます:
Array ( [headers] => Array ( [server] => nginx /1.2.0 [日付] => 2013 年 10 月 13 日 (日) 02:23:46 GMT [コンテンツ タイプ] => text/plain;charset=UTF-8 [コンテンツ長] => 76 => 閉じる [api-server-ip] => Accept-Encoding [x-varnish] => 0 [via] => ) [本文] = > 不正な Content-Type ヘッダー値: 'application/x-www-form-urlencoded; [応答] => 配列 ( [コード] => 400 [メッセージ] => Request ) [cookies] => Array ( ) [filename] => )

Baidu が確認したところ、「構文形式が間違っているため、サーバーはこのリクエストを理解できません。クライアント プログラムはこのリクエストを繰り返すことができません。

この問題はどうやって解決できますか?

ディスカッションへの返信(解決策)

このブログを読んでみましょう、、、 http://zhangge.net/4947.html

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート