Mais conteúdo relacionado
Semelhante a TwitterKitではじめる OAuthスピードクッキング (20)
TwitterKitではじめる OAuthスピードクッキング
- 2. • Twitter API
• OAuth
• TwitterKit
• TwitterKit
• TwitterKit
- 3. About Me
• WEB Developer / PHP / CakePHP / HTML / CSS / jQuery / PostgreSQL / MySQL /
iPhone / / / / / / / / no more
• BLOG: http://php-tips.com/
• TWITTER: @nojimage
- 5. Twitter API
• http://api.twitter.com/ HTTP
JSON XML
‣
‣
‣
‣ etc...
•
• http://dev.twitter.com/
- 6. OAuth
• Twitter API Basic OAuth
‣ Basic
• ConsumerKey AccessToken
‣
‣ Twitter AccessToken
• dev.twitter.com
- 7. OAuth
• Twitter
‣ ConsumerKey RequestToken Twitter
‣ Authorize URL ←
• Twitter
• Twitter
‣ URL (oauth_token, oauth_verifier)
‣ RequestToken AccessToken Twitter
‣ AccessToken ConsumerKey API
- 9. TwitterKit
• TwitterAPI
‣ DataSource, Behavior, Component
‣ Twitter
•
‣ PHP 5.2 upper (json_encode/json_decode)
‣ CakePHP 1.3 +
‣ jQuery 1.4.2 +
http://github.com/elstc/twitter_kit
- 10. TwitterKit
• Twitter API
‣ http://openlist.jp/
‣ http://tsuketter.com/ ( )
• pear HTTP_OAuth
‣ pear Neil Crookess(@neilcrookes)
HttpSocketOauth
• OAuth
- 14. • http://dev.twitter.com/apps/new
‣
‣ callback localhost
‣
Read Write
- 15. • http://dev.twitter.com/apps/{app_id}
• Consumer Key Consumer Secret
• My Access Token
AccessToken
- 16. TwitterKit Install
• [git clone]
cd app/plugins
git clone http://github.com/elstc/twitter_kit.git
‣ git github
• DB [cake schema]
cake/console/cake schema create TwitterKit.TwitterKit
‣ Enter
- 17. database.php
• ConsumerKey, ConsumerSecret, CallbackURL
<?php
class DATABASE_CONFIG {
var $default = array(
// DB .....
);
var $twitter = array( // twitter
'driver' => 'TwitterKit.TwitterSource',
'oauth_consumer_key' => '{YOUR_CONSUMER_KEY}',
'oauth_consumer_secret' => '{YOUR_CONSUMER_SECRET}',
'oauth_callback' => '/twitter_kit/oauth/callback',
'cache' => true, // app/tmp/cache/twitter/
);
}
- 18. Model
• Behavior
<?php
class Tiwt extends AppModel {
var $name = 'Tiwt';
var $useTable = false; //
// TwitterTweetBehavior
var $actsAs = array('TwitterKit.TwitterTweet');
}
- 19. Controller
• Component, Helper
<?php
class TiwtsController extends AppController {
var $name = 'Tiwts';
//
var $components = array('TwitterKit.Twitter');
// TwitterFormHelper
var $helpers = array('TwitterKit.TwitterForm');
}
- 20. AuthComponent
• AppController::beforeFilter()
<?php
class AppController extends Controller {
var $components = array('Session', 'Auth');
// ...
public function beforeFilter() {
$this->Auth->authorize = 'controller';
$this->Auth->userModel = 'TwitterKit.TwitterKitUser';
$this->Auth->loginAction = array(
'plugin' => 'twitter_kit',
'controller' => 'users', 'action' => 'login');
}
// ...
- 21. AuthComponent
• isAuthorized AccessToken
<?php
class AppController extends Controller {
// ...
public function isAuthorized() {
// set OAuth
ConnectionManager::getDatasource('twitter')->setToken(
$this->Auth->user('oauth_token'),
$this->Auth->user('oauth_token_secret')
);
// ...
return true;
}
// ...
- 22. Action!
• TwitController::index()
• HOME
• Model fetch
• TwitController::add()
• POST
• Model teewt
•
- 23. TiwtsController::index()
function index() {
if ($this->Session->read('reflash')) {
//
$this->Twitter->refreshCache();
}
$timelines = $this->Tiwt->fetch($this->params['named']);
$this->set(compact('timelines'));
}
- 24. Tiwt::fetch()
function fetch($options = array()) {
$params = array();
foreach (array('since_id', 'max_id', 'count', 'page') as $key) {
if (!empty($options[$key])) {
$params[$key] = $options[$key];
}
}
//
$results = $this->getTwitterSource()->statuses_home_timeline($params);
if (empty($results)) { return array(); }
//
return array_map(array($this, '_reverse'), $results);
}
- 25. TiwtsController::add()
function add() {
$this->autoRender = false;
if (!empty($this->data)) {
if ( $this->Tiwt->teewt($this->data) ) {
$this->Session->write('reflash', true); //
$this->Session->setFlash($this->Tiwt->strrev(' '));
} else {
$this->Session->setFlash($this->Tiwt->strrev(' '));
}
}
$this->redirect(array('action' => 'index'));
}
- 26. Tiwt::teewt()
function teewt($data = null) {
if (empty($data)) { $data = $this->data; }
// (tweet TwitterKit::TwitterTweet )
return $this->tweet($this->strrev($data[$this->alias]['text']));
}
- 27. Tiwt::strrev(), Tiwt::_reverse()
function _reverse($data) {
if (empty($data)) { return array(); }
$data['rev']['text'] = $this->strrev($data['text']);
$data['rev']['user']['screen_name'] = $this->strrev(
$data['user']['screen_name']);
return $data;
}
function strrev($str){
preg_match_all('/./us', $str, $ar);
return join('', array_reverse($ar[0]));
}
- 28. View
• layout/default.ctp
• jQuery
• tiwts/index.ctp
• → TwitterFormHelper::tweet()
•
- 30. • Twitter
• TwitterKit
github PULL