Kohana3フレームワークでのOAuthとTwitter APIの統合

どういうわけか、ブログとツイッターを1つの全体に統合する時が来るという考えが私の頭に忍び込んだ。 これには、アプリケーションをサードパーティAPIの機能に接続するOAuthや、この場合はTwitter APIとして実装される機能自体など、2つの素晴らしいものがあります。

いくつかのマニュアルを研究し(たとえば、Dmitry Koterovがこのトピックに関する非常に良い記事を持っています)、OAuthの基本原理を理解した後、私はあなたの自転車を書くことは現時点では非効率的な作業であるという結論に達し、すでにインターネットで準備ができているものを見ることにしました。

では、 http://dev.twitter.com/pages/librariesにアクセスすると何がわかりますか? 私たちのタスクのための想像を絶する数の既製のソリューション。 私は、気に入ったTwitter非同期ライブラリのJaisen Mathaiに立ち寄ることに決めました。 次に、ライブラリをKohana 3に統合する方法と使用方法について説明します。

開始するには、 http://twitter.com/apps/newでTwitterにアプリケーションを登録します。 フィールドに入力し、「アプリケーションタイプ」の「ブラウザ」タイプを選択し、「デフォルトアクセスタイプ」を「読み取りと書き込み」に設定します。 必ず「コールバックURL」フィールドに記入してください。これは、アプリケーションとtwitterの間で秘密鍵を交換した後、サイトへのリダイレクトが行われるページです。 たとえば、確認メソッドでこれを担当する別のTwitterコントローラーがあり、そのコードは後で提供します(つまり、次のようになります: sitename.com/twitter/confirm )。 以上で、キャプチャに入力し、「保存」をクリックして、「コンシューマキー」と「コンシューマシークレット」というキーのペアを取得します。 それらは少し後で必要になります。

次のステップは、アーカイブの内容をTwitter非同期ライブラリでkohana3上のサイトのディレクトリ/モジュール/ epitwitter /クラス/に解凍することです。 必要なファイルは、EpiCurl.php、EpiOAuth.php、EpiTwitter.phpの3つだけです。 たとえば、EpiTwitter.phpへのパスは/modules/epitwitter/classes/EpiTwitter.phpのようになります。 ファイル名EpiTwitter.phpは小文字(epitwitter.php)であり、クラス自体の説明の直前に3行追加します。


include_once( 'EpiCurl.php' );
include_once( 'EpiOAuth.php' );
include_once( 'secret.php' );
class EpiTwitter extends EpiOAuth
{


* This source code was highlighted with Source Code Highlighter .


これらの操作は、ライブラリをKohana3モジュールロードシステムに統合するために必要です。

次に、キーを保存するファイル/modules/epitwitter/classes/secret.phpを作成します。

<?php
define( 'CONSUMER_KEY' , '__consumer_key' );
define( 'CONSUMER_SECRET' , '__consumer_secret' );
?>


* This source code was highlighted with Source Code Highlighter .


bootstrap.phpを開き、それに行を追加してライブラリをシステムにロードします。

Kohana::modules(array(

'epitwitter' => MODPATH. 'epitwitter' ,

));


* This source code was highlighted with Source Code Highlighter .


これで、ライブラリのシステムへの統合が完了しました。今度は、ライブラリを機能させるときです。

コントローラ/application/classes/controller/twitter.phpを作成します-CallbackURLの場合、覚えていますか? これは私から見たものです:

<?php defined( 'SYSPATH' ) or die( 'No direct script access.' );
class Controller_Twitter extends Controller {

public function action_confirm()
{
$twitterObj = new EpiTwitter(CONSUMER_KEY, CONSUMER_SECRET);
$twitterObj->setToken($_GET[ 'oauth_token' ]);
$token = $twitterObj->getAccessToken();
Cookie::set( 'oauth_token' ,$token->oauth_token,60*60*24*7);
Cookie::set( 'oauth_token_secret' ,$token->oauth_token_secret,60*60*24*7);
header( 'Location: /' );
exit();
}

}


* This source code was highlighted with Source Code Highlighter .


特に、confirmメソッド-public function action_confirm()に関心があります。これは、アプリケーションのCallbackURL設定が参照します。 ここでは、トークンがOAuth twitterから受信され、その値がたとえばcookieに保存されます(oauth_tokenとoauth_token_secretのペア)。 次に、メインページへのリダイレクトがあり、Cookieが初期化されます。

メインページで何が起こりますか? コアコントローラーは、サイトのコアを担当します。

<?php defined( 'SYSPATH' ) or die( 'No direct script access.' );
class Controller_Core extends Controller_Template {
public $template = 'main' ; //

public $twitterObj = NULL;
public $twitterInfo = NULL;

public function before()
{
parent::before();
// oAuth
if (isset($_COOKIE[ 'oauth_token' ]) and isset($_COOKIE[ 'oauth_token_secret' ]))
{
$twitterObj = new EpiTwitter(CONSUMER_KEY, CONSUMER_SECRET,
Cookie::get( 'oauth_token' ), Cookie::get( 'oauth_token_secret' ));
// oAuth+TwitterAPI .
$ this ->twitterObj = $twitterObj;
//
$twitterInfo = $twitterObj->get_accountVerify_credentials();
$twitterInfo->response;
$ this ->twitterInfo = $twitterInfo;
$ this ->template->twitterObj = $ this ->twitterObj;

// . .
$ this ->template->twitterInfo = $twitterInfo;
}
else
{
// EpiTwitter -
$twitterObj = new EpiTwitter(CONSUMER_KEY, CONSUMER_SECRET);
$ this ->twitterObj = NULL;
$ this ->twitterInfo = NULL;
// , :
$ this ->template->twitter_login = $twitterObj->getAuthorizationUrl();

}
}


* This source code was highlighted with Source Code Highlighter .



Kohana3フレームワークには、before()メソッドがあります。これは、mainメソッドがアクティブになる前にプロセスが発生するという点で注目に値します。 つまり、メインメソッドとテンプレートのメインデータが処理される前に、ライブラリクラスのインスタンスが作成され、必要なキー操作が実行され、状況に応じて、oAuth Twitterの承認リンクまたは承認されたユーザーに関するデータがテンプレートに転送されます。

ライブラリには、TwitterAPIにアクセスするための非常に便利な方法があります。 たとえば、次の行を考えます。

$twitterInfo = $twitterObj->get_accountVerify_credentials();

ここで何が起こっていますか? すべてが非常に簡単です。 GETメソッドを使用して、アカウント/ verify_credentialsでTwitterAPIをノックします。 結果はjsonで返され、オブジェクト内で解析されます。

たとえば、TwitterAPIに従ってtwitterアカウントの公開データを見つけるには、users / showメソッドを使用する必要があります( http://apiwiki.twitter.com/Twitter-REST-API-Method%3A-users%C2%を参照してください) A0show )。 したがって、呼び出しは次のようになります。

$twitterInfo = $twitterObj->get_usersShow(array('screen_name'=>'VasyaPupkin'));

すべてが簡単です:)

Kohana3への統合に関する具体化を捨てると、要するにアプリケーションのバンドル+ OAuth + Twitter API( Twitter非同期ライブラリを使用)は次のようになります。
  1. Twitterでアプリケーションを登録すると、consumer_keyとconsumer_secretのペアのキーを取得します
  2. callbackurlでは、OAuth Twitterからトークンを受信するためのフットプリントを準備し、受信したトークンをWebサイトの永続的な承認のためにどこかに保存します。
  3. 結果のトークンのペアとコンシューマキーのペアを使用して、Twitter APIに自由にアクセスできるEpiTwitterインスタンスを作成します。 または、consumer_keyとconsumer_secretのペアを使用するトークンがない場合は、oAuth twitterで認証リンクを取得してトークンを取得します。

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


All Articles