ホームページ > バックエンド開発 > PHPチュートリアル > PHP で Weibo_PHP の同期送信を実装するチュートリアル

PHP で Weibo_PHP の同期送信を実装するチュートリアル

WBOY
リリース: 2016-07-13 10:39:10
オリジナル
849 人が閲覧しました

はじめに: ブログサイトをデザインするとき、Weibo に記事を同時に公開する必要がある場合があります。この記事では、この機能を実装する基本的な方法について説明します。



準備 ​ Sina Weibo の開発者として、本人確認が必要です。 個人認証の審査には通常 1 営業日かかります。 次のステップは、審査のためにウェブサイトを提出し、国内出願の場合は登録番号を提出します。海外にいる場合は、所在地の Web サイトから海外証明書を提出するだけで済みます。これには約 1 営業日かかります。 個人識別レビューに合格すると、アプリケーションを作成してインターフェイスを呼び出すことができます。この時点で取得される権限は比較的低いものです。 ウェブサイトが審査に提出しなかった場合、または審査に落ちた場合、Weibo への投稿には影響しません。投稿された Weibo の下には「未審査の申請」のみが表示されます。 確認後、Web サイトのアプリケーション名が表示されます: 画像 ​

通話インターフェース ​ Weibo オープン プラットフォームはテスト ツールを提供します。 アクセスを開発する前に、まずこのテスト ツールを通じてテスト Weibo を送信できることを確認する必要があります。 http://open.weibo.com/tools/console?uri=statuses/update&httpmethod=POST&key1=status&value1=%E5%BE%AE%E5%8D%9A%E6%9D%A5%E8%87%AAAPI%E6 %B5%8B%E8%AF%95%E5%B7%A5%E5%85%B7 ​ Weibo に投稿するための API リファレンス ドキュメントは次のとおりです。 http://open.weibo.com/wiki/2/statuses/update ​ Weibo を投稿するためのすべてのインターフェイスには権限認証が必要です。認証に合格すると、キーの有効期間はユーザー レベルに応じて異なります。 Web 審査に落ちた場合は 1 日、審査に合格した一般ユーザーには 7 日間の猶予期間が与えられます。 有効期間中、トークンがローカルに保存されている限り、権限認証のために Sina サーバーと対話する必要はありません。トークンを使用してさまざまな Weibo API を呼び出すことができます (読み取り、書き込み、視聴者情報の取得など)。 ​

権限認証 ​ 権限を認証するには 3 つの方法があります。 ​ ユーザー名とパスワードによる; これはプログラムに Weibo アカウントのユーザー名とパスワードを記述し、API 呼び出しを通じて認証するのが最も簡単ですが、このインターフェイスはアプリ開発用に提供されており、Web アプリケーションでは使用できないことに注意してください。 ​ Web コールバック経由。 SINA サーバーと対話し、コールバック アドレスを提供する必要があります。コールバック アドレスから access_token を取得します。 ​ 3 番目の方法はコードによる方法ですが、これは注意深く研究されていないためスキップされます。 Web アプリケーションは 2 番目の認証方法のみをサポートします。2 番目の方法の使用については次のとおりです。 ​ Sina が提供する SDK をダウンロードします。これには、デモおよび API パッケージング クラスが含まれています。 http://open.weibo.com/wiki/SDK ​

ページにアクセス
​ ==call.php========================
include_once( 'sina_config.php' ); include_once( 'saetv2.ex.class.php' ); ​ // 許可されたURLを取得する $o = 新しい SaeTOAuthV2( WB_AKEY , WB_SKEY ); $code_url = $o->getAuthorizeURL( WB_CALLBACK_URL ); ​ // 投稿経由で URL を呼び出すか、認可を取得します。認可が完了すると、Sina は渡したコールバック アドレス WB_CALLBACK_URL を呼び出します。 request()->リダイレクト($code_url);


コールバック アドレス ページ (WB_CALLBACK_URL):
===callback.php====================
$o = 新しい SaeTOAuthV2( WB_AKEY , WB_SKEY ); if (isset($_REQUEST['code'])) { $keys = 配列(); $keys['コード'] = $_REQUEST['コード']; $keys['redirect_uri'] = WB_CALLBACK_URL; 試す { $token = $o->getAccessToken( 'code', $keys ) ; } キャッチ (OAuthException $e) { echo "weibo.com アクセス トークンの取得エラー。"; Log_err ("Weibo.com アクセス トークンの取得エラー。"); 戻る ; } } ​ if ($token) { //認可された API 呼び出しキーを取得した後、有効期間内に API インターフェイスを複数回呼び出す場合は、それを保存できます。再度認可する必要はありません。 $_SESSION['トークン'] = $トークン; $c = new SaeTClientV2( WB_AKEY , WB_SKEY , $_SESSION['token']['access_token'] ); $ret = $c->update( $weiboStr ); if ( isset($ret['error_code']) && $ret['error_code'] > 0 ) { $str = "Weibo.com の送信に失敗しました。エラー情報:" . $ret['error'] 。 LOG_ERR($str); } それ以外 { LOG_INFO("Weibo.com 送信成功。"); } }

ブログ概要抽出 ​ Weibo の文字数は 140 です。中国語の文字は 1 文字としてカウントされますが、strlen() は 3 文字としてカウントされます。 1 文字として、使用要件を満たします。 最後に、Weibo 投稿内の HTML タグや   などをクリアする必要があります。 ​
//現在の Weibo コンテンツを取得します (140 ワード) パブリック関数 getWeibo() { $titleLen = mb_strlen($this->title, 'UTF-8'); //リンクと省略記号の 20 文字を除く 140 語。説明が必要なのはリンクです。記事のリンクはどんなに長くても短いリンクに置き換えられます。 Weibo では、短いリンクの単語数に基づいて計算されます。 $summaryLen = 115 - $titleLen; ​ $pubPaper = Cutstr_html($this->summary); If(mb_strlen($pubPaper, 'UTF-8') >= $summaryLen) $pubPaper = mb_substr($pubPaper,0,$summaryLen,'UTF-8'); ​ $pubPaper = sprintf('[%s]%s...%s', $this->title , $pubPaper , aurl('post/show', array('id' => $this-> id))); ​ $pubPaper を返します。 } ​ //htmlタグを完全に削除します 関数cutstr_html($string) { $string = ストリップタグ($string); $string = preg_replace ('/n/is', '', $string); $string = preg_replace ('/ | /is', '', $string); $string = preg_replace ('/ /is', '', $string); ​ $string を返します。 }

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/735049.html技術記事はじめに: ブログ サイトをデザインするとき、Weibo に記事を同時に公開する必要がある場合があります。この記事では、この機能を実装する基本的な方法について説明します。 新浪微博として準備作業…
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート