1/31/2012

[php で OAuth を使ってみる:第十一回] 4square でチェックインする

4square で OAuth を使ってチェックインしてみる。
※この情報は 2012 年 1 月現在のものです。仕様が変更される可能性は充分にあるので、ご了承ください。

OAuth を使った認証〜チェックインスポットの流れは 前のエントリー を参照。

チェックインする
<?php
$status = '**にチェックイン!'; // チェックインと一緒に post する文字列
$placeId = 'xxxxxxxxxxxxxxxx'; // 前エントリーで取得したチェックインスポットの ID
$lat = ''xxxxxxxxxxxxxxxx''; // 前エントリーで取得したチェックインスポットの緯度
$lon = 'xxxxxxxxxxxxxxxx'; // 前エントリーで取得したチェックインスポットの経度
$name = 'xxxxxxxxxxxxxxxx'; // 前エントリーで取得したチェックインスポットの名前

$checkin_url = 'https://api.foursquare.com/v2/checkins/add';
$data = array(
  'oauth_token' => $_COOKIE['4sqToken'], // 前エントリーの「3.」で cookie に保存した access_token
  'venueId' => $placeId,
  'venue' => $name,
  'shout' => $status,
  'broadcast' => 'public',
  'll' => $lat. ','. $lon
);
$data = http_build_query($data, '', '&');
$options = array(
  'http' => array(
    'method' => 'POST',
    'content' => $data
  )
);
$result = file_get_contents($checkin_url, false, stream_context_create($options));
?>

1/30/2012

[php で OAuth を使ってみる:第十回] 4square のチェックインスポットを取得する

4square のチェックインスポットを OAuth を使って取得してみる。
※この情報は 2012 年 1 月現在のものです。仕様が変更される可能性は充分にあるので、ご了承ください。

1. アプリを登録する
OAuth Consumer Registration にアクセスし、アプリの登録を行う。
APPLICATION NAME: アプリ名
APPLICATION WEB SITE: アプリ本体の URL
CALLBACK URL: ユーザによる認証動作後にリダイレクトする URL(「4.」でアップする php)

※全ての情報は登録後でも変更できるので、気楽に。

2. 使うキーを確認する
My OAuth Consumers にある「Client ID」と、「Client Secret」を確認する。これが今後必要となるキー。

3. 認証受け渡し用の php を用意する
下記に必要な事項を埋め、アプリのディレクトリにアップする。
<?php
$consumer_key = 'xxxxxxxxxxxxxxxx'; // 「2.」で確認した「Client ID」
$consumer_secret = 'xxxxxxxxxxxxxxxx'; // 「2.」で確認した「Client Secret」
$callback = 'callback する URL'; // この場合はこの php 本体

if (empty($_GET['code'])) {
// ユーザの認証前、4square にリダイレクトする
  $auth_url = 'https://foursquare.com/oauth2/authenticate?';
  $auth_url .= 'client_id='. $consumer_key;
  $auth_url .= '&response_type=code';
  $auth_url .= '&redirect_uri='. $callback;

  header('Location: '. $auth_url);
} else {
// ユーザの認証後、リダイレクトで帰ってきた後
  $accees_token_url = 'https://foursquare.com/oauth2/access_token?';
  $accees_token_url .= 'client_id='. $consumer_key;
  $accees_token_url .= '&client_secret='. $consumer_secret;
  $accees_token_url .= '&grant_type=authorization_code';
  $accees_token_url .= '&redirect_uri='. $callback;
  $accees_token_url .= '&code='. $_GET['code'];

  $result = json_decode(file_get_contents($accees_token_url), true);
  $access_token = $result['access_token'];

  echo "<script type='text/javascript'>location.href = 'アプリ本体の URL';</script>";
}
?>

4. チェックインスポットを検索して表示する
<?php
// php の文字コードが utf-8 であっても文字化けしたので記載
header('Content-type: application/json; charset=utf-8');

$query = 'モスバーガー'; // 検索語句

$spot_url = 'https://api.foursquare.com/v2/venues/search?';
$spot_url .= 'client_id='. 'xxxxxxxxxxxxxxxx'; // 「2.」で確認した「Client ID」
$spot_url .= '&client_secret='. 'xxxxxxxxxxxxxxxx'; // 「2.」で確認した「Client Secret」
$spot_url .= '&access_token='. 'xxxxxxxxxxxxxxxx'; // 「4.」で取得した access_token
$spot_url .= '&ll=34.985214,135.758593'; // 任意の緯度経度
$spot_url .= '&llAcc=1000'; // 1,000m 四方が対象
$spot_url .= '&limit=20'; // 20 件取得
// スポット名で検索する場合
if ($_COOKIE['query']) $spot_url .= '&query='. urlencode($query); // urlencode しないと取得できない
// 結果は json で返ってくるので、そのまま echo してやる
echo file_get_contents($spot_url);
?>
例えばこの php をアプリ本体の Javascript で読み込み、結果で出た json を Javascript で解析してレイアウト後に表示する、などができる。

1/29/2012

[php で OAuth を使ってみる:第九回] Facebook でチェックインする

Facebook で OAuth を使ってチェックインしてみる。
※この情報は 2012 年 1 月現在のものです。仕様が変更される可能性は充分にあるので、ご了承ください。

OAuth を使った認証〜チェックインスポットの流れは Facebook に文字を post する を参照。

チェックインする
<?php
$status = '**にチェックイン!'; // チェックインと一緒に post する文字列
$placeId = 'xxxxxxxxxxxxxxxx'; // 前エントリーで取得したチェックインスポットの ID
$lat = ''xxxxxxxxxxxxxxxx''; // 前エントリーで取得したチェックインスポットの緯度
$lon = 'xxxxxxxxxxxxxxxx'; // 前エントリーで取得したチェックインスポットの経度
$name = 'xxxxxxxxxxxxxxxx'; // 前エントリーで取得したチェックインスポットの名前

array_push($targets, ' Facebook ');

require_once 'facebook/facebook.php';

$facebook = new Facebook(array(
  'appId' => 'xxxxxxxxxxxxxxxx', // 以前のエントリーで確認した「App ID/API Key」
  'secret' => 'xxxxxxxxxxxxxxxx' // 以前のエントリーで確認した「アプリの秘訣」
));

$attachment = array(
  'access_token' => 'xxxxxxxxxxxxxxxx', // 以前のエントリーで取得した access_token
  'message' => $status,
  'place' => $placeId,
  'coordinates' => array(
    'latitude' => $lat,
    'longitude' => $lon
  )
);

$facebook->api('/me/checkins', 'POST', $attachment);

echo "<script type='text/javascript'>alert('「". $name. "」にチェックインしました!');</script>\n";
?>

1/28/2012

[php で OAuth を使ってみる:第八回] Facebook のチェックインスポット取得する

Facebook のチェックインスポットを OAuth を使って取得してみる。
※この情報は 2012 年 1 月現在のものです。仕様が変更される可能性は充分にあるので、ご了承ください。

OAuth を使った認証の流れは Facebook に文字を post する を参照。その際に、認証時に使う「scope」を「publish_checkins」にする。

チェックインスポットを検索して表示する
<?php
$query = $_POST['query'];
// php の文字コードが utf-8 であっても文字化けしたので記載
header('Content-type: application/json; charset=utf-8');

require_once 'facebook/facebook.php';

$facebook = new Facebook(array(
  'appId' => 'xxxxxxxxxxxxxxxx', // 以前のエントリーで確認した「App ID/API Key」
  'secret' => 'xxxxxxxxxxxxxxxx' // 以前のエントリーで確認した「アプリの秘訣」
));
$attachment = array(
  'type' => 'place',
  'center'=> '34.985214,135.758593', // 任意の緯度経度
  'distance' => '1000', // 1,000m 四方が対象
  'access_token' => 'xxxxxxxxxxxxxxxx' // 以前のエントリーで取得した access_token
);
$query = 'モスバーガー'; // 検索語句
// スポット名で検索する場合
if ($query) $attachment['q'] = $query;

$place = $facebook->api('/search', 'get', $attachment);
// 結果は json で返ってこないので、json_encode してやる
echo json_encode($place);
?>
例えばこの php をアプリ本体の Javascript で読み込み、結果で出た json を Javascript で解析してレイアウト後に表示する、などができる。

1/27/2012

php で OAuth を使ってみる

php で OAuth を使って色々と遊んでみようと思う。

  1. Twitter に文字を post する
  2. tumblr. に文字を post する
  3. Facebook に文字を post する
  4. TwitPic に画像を post する
  5. tumblr. に画像を post する
  6. Facebook に画像を post する
  7. Flickr に画像を post する
  8. Facebook のチェックインスポット取得する
  9. Facebook でチェックインする
  10. 4square のチェックインスポットを取得する
  11. Twitter でお気に入りを取得する
  12. Twitter でフォロワの一覧を取得する
  13. Twitter でフォローの一覧を取得する

1/26/2012

[php で OAuth を使ってみる:第七回] Flickr に画像を post する

Flickr に OAuth を使って画像を post してみる。
※この情報は 2012 年 1 月現在のものです。仕様が変更される可能性は充分にあるので、ご了承ください。

1. Flickr アプリを登録する
The App Garden にアクセスし、アプリの登録を行う。商用でなければ「APPLY FOR A NON-COMMERCIAL KEY」をまずクリックする。
What's the name of your app?: アプリ名
What are you building?: アプリの説明
下 2 つのチェック: チェックする

※登録後、アプリ名は変えられない模様。

2. Flickr の使うキーを確認する
登録後に表示されたページで、「Key」と「Secret」を確認する。これが今後必要となるキー。

3. 書き込みできる権限に変更する
登録後に表示されたページの「Edit app details」をクリックし、続いて右側にある「Edit」をクリックして、入力し、保存する。
App Type: 用途により選ぶ
Callback URL: ユーザによる認証動作後にリダイレクトする URL(「4.」でアップする php)
App Logo: アイコン(GIF のみw)

3. 必要となるライブラリをインストールする
下記からダウンロードし、アプリとするディレクトリにアップする。
phpflickr: phpflickr, /アプリのディレクトリ/Flickr

4. 認証受け渡し用の php を用意する
下記に必要な事項を埋め、アプリのディレクトリにアップする。
<?php
$api_key = 'xxxxxxxxxxxxxxxx'; // 「2.」で確認した「Key」
$api_secret = 'xxxxxxxxxxxxxxxx'; // 「2.」で確認した「Secret」
$permissions = 'write'; // 書き込むので write。読み込むだけなら read、削除もするなら delete
$path_to_phpFlickr_class = './Flickr/';

ob_start();
require_once($path_to_phpFlickr_class . 'phpFlickr.php');
unset($_SESSION['phpFlickr_auth_token']);

if (isset($_SESSION['phpFlickr_auth_redirect']) && !empty($_SESSION['phpFlickr_auth_redirect'])) {
  $redirect = $_SESSION['phpFlickr_auth_redirect'];
  unset($_SESSION['phpFlickr_auth_redirect']);
}

$f = new phpFlickr($api_key, $api_secret);

if (empty($_GET['frob'])) {
  $f->auth($permissions, false);
} else {
  $f->auth_getToken($_GET['frob']);
}

if (empty($redirect)) {
// ユーザの認証後、リダイレクトで帰ってきた後
  $f->auth("read");

  echo "<script type='text/javascript'>location.href = 'アプリ本体の URL';</script>";
} else {
// ユーザの認証前、Flickr にリダイレクトする
  header('Location: '. $redirect);
}
?>

5. post する
下記の php をアプリのディレクトリにアップする(予め tmp ディレクトリを 707 で作っておく)
※html の form 要素内での input type='file' は name='img' としている。
<?php
$title = 'テストタイトル';
$status = 'テスト';
$tag = 'テスト画像';

$key = 'xxxxxxxxxxxxxxxx'; // 「2.」で確認した「Key」
$secret = 'xxxxxxxxxxxxxxxx'; // 「2.」で確認した「Secret」

// 一度自分のサーバにアップ
$uploaddir = './tmp/';
$photo = $uploaddir. basename($_FILES['img']['name']);
move_uploaded_file($_FILES['img']['tmp_name'], $photo);

require_once './Flickr/phpFlickr.php';

$f = new phpFlickr($key, $secret);
$f->auth('write');
$f->sync_upload($photo, $title, $status, $tag);
// 自分のサーバにアップした画像を削除
unlink($photo);

echo "<script type='text/javascript'>alert('画像「". $_FILES['img']['tmp_name']. "」をpostしました!');</script>\n";
?>

1/25/2012

[php で OAuth を使ってみる:第六回] Facebook に画像を post する

Facebook に OAuth を使って画像を post してみる。
※この情報は 2012 年 1 月現在のものです。仕様が変更される可能性は充分にあるので、ご了承ください。

OAuth を使った認証の流れは Facebook に文字を post する を参照。

post する
下記の php をアプリのディレクトリにアップする(予め tmp ディレクトリを 707 で作っておく)
<?php
// 一度自分のサーバにアップ
$uploaddir = './tmp/';
$photo = $uploaddir. basename($_FILES['img']['name']);
move_uploaded_file($_FILES['img']['tmp_name'], $photo);

require_once 'facebook/facebook.php';

$facebook = new Facebook(array(
  'appId' => 'xxxxxxxxxxxxxxxx', // 以前のエントリーで確認した「App ID/API Key」
  'secret' => 'xxxxxxxxxxxxxxxx' // 以前のエントリーで確認した「アプリの秘訣」
));

$attachment = array(
  'access_token' => $_COOKIE['facebookToken'], // 以前のエントリーで cookie に保存した access_token
  'message' => 'テスト', // post する本文
  'src' => '@'. $photo, // 必ず $photo の前に '@' を付ける
);

$facebook->setFileUploadSupport(true);
$post_result = $facebook->api('/me/photos', 'POST', $attachment);

// 自分のサーバにアップした画像を削除
unlink($photo);

echo "<script type='text/javascript'>alert('「". $status. "」をpostしました!');</script>\n";
?>

1/24/2012

[php で OAuth を使ってみる:第五回] tumblr. に画像を post する

tumblr. に OAuth を使って画像を post してみる。
※この情報は 2012 年 1 月現在のものです。仕様が変更される可能性は充分にあるので、ご了承ください。

OAuth を使った認証の流れは tumblr. に文字を post する を参照。

post する
下記の php をアプリのディレクトリにアップする(予め tmp ディレクトリを 707 で作っておく)
<?php
// 一度自分のサーバにアップ
$uploaddir = './tmp/';
$photo = $uploaddir. basename($_FILES['img']['name']);
$path = 'アプリのあるドメイン'. 'tmp/'. basename($_FILES['img']['name']); // full path
move_uploaded_file($_FILES['img']['tmp_name'], $photo);

require_once 'HTTP/OAuth/Consumer.php';

$consumer_key = 'xxxxxxxxxxxxxxxx'; // 以前のエントリーで確認した OAuth Consumer Key
$consumer_secret = 'xxxxxxxxxxxxxxxx'; // 以前のエントリーで確認した Secret Key
$access_token = 'xxxxxxxxxxxxxxxx'; // 以前のエントリーで取得した access_token
$access_token_secret = 'xxxxxxxxxxxxxxxx'; // 以前のエントリーで取得した access_token_secret

$http_request = new HTTP_Request2();
$http_request->setConfig('ssl_verify_peer', false);

$consumer = new HTTP_OAuth_Consumer($consumer_key, $consumer_secret);
$consumer_request = new HTTP_OAuth_Consumer_Request;
$consumer_request->accept($http_request);
$consumer->accept($consumer_request);

$consumer->setToken($access_token);
$consumer->setTokenSecret($access_token_secret);

$params = array(
  'type' => 'photo',
  'source' => $path,
  'caption' => 'テスト' // post する本文
);

$api_url = 'http://www.tumblr.com/api/write';
$response = $consumer->sendRequest($api_url, $params);
// 自分のサーバにアップした画像を削除
unlink($photo);

echo "<script type='text/javascript'>alert('画像「". $_FILES['img']['tmp_name']. "」をpostしました!');</script>\n";
?>

「引用」以外で必要な項目は公式ページを参考に。
Tumblr API v1 | Tumblr

1/23/2012

[php で OAuth を使ってみる:第四回] TwitPic に画像を post する

TwitPic に OAuth を使って画像を post してみる。
※この情報は 2012 年 1 月現在のものです。仕様が変更される可能性は充分にあるので、ご了承ください。

OAuth を使った認証の流れは Twitter に文字を post する を参照。

1. TwitPic アプリを登録する
TwitPic Developers - Register an Application にアクセスし、アプリの登録を行う。
Application Title: アプリ名(日本語不可)
Application Description: アプリの説明
Application Homepage: アプリ本体の URL
Your Email: email アドレス
Are You Human?: CAPTCHA による認証

※全ての情報は登録後でも変更できるので、気楽に。

2. TwitPic の使うキーを確認する
TwitPic Developers - Your Applications に表示されている「API Key」を確認する。これも今後必要となるキー。

3. 必要となるライブラリをインストールする
下記からダウンロードし、アプリとするディレクトリにアップする。
meltingice/php-twitpic: meltingice/php-twitpic - GitHub, /アプリのディレクトリ/TwitPic

4. post する
下記の php をアプリのディレクトリにアップする(予め tmp ディレクトリを 707 で作っておく)
※html の form 要素内での input type='file' は name='img' としている。
<?php
$status = 'テスト';
// 一度自分のサーバにアップ
$uploaddir = './tmp/';
$photo = $uploaddir. basename($_FILES['img']['name']);
move_uploaded_file($_FILES['img']['tmp_name'], $photo);

require_once 'TwitPic/TwitPic.php';

$twitpic_key = 'xxxxxxxxxxxxxxxx'; // 「3.」で確認した「API Key」
$consumer_key = 'xxxxxxxxxxxxxxxx'; // 以前のエントリーで確認した Consumer key
$consumer_secret = 'xxxxxxxxxxxxxxxx'; // 以前のエントリーで確認した Consumer secret
$access_token = 'xxxxxxxxxxxxxxxx'; // 以前のエントリーで取得した access_token
$access_token_secret = 'xxxxxxxxxxxxxxxx'; // 以前のエントリーで取得した access_token_secret

$twitpic = new TwitPic(
  $twitpic_key,
  $consumer_key,
  $consumer_secret,
  $access_token,
  $access_token_secret
);

try{
  $result = $twitpic->uploadAndPost(
    array(
      'media'=>$photo,
      'message'=>$status // post する本文
    ),
    array('format'=>'xml')
  );
  $result = print_r($result, true);
} catch (Exception $e) {
  echo $e->getMessage();
  exit;
}
// 自分のサーバにアップした画像を削除
unlink($photo);

echo "<script type='text/javascript'>alert('画像「". $_FILES['img']['tmp_name']. "」をpostしました!');</script>\n";
?>

1/22/2012

[php で OAuth を使ってみる:第参回] Facebook に文字を post する

Facebook に OAuth を使って post してみる。
※この情報は 2012 年 1 月現在のものです。仕様が変更される可能性は充分にあるので、ご了承ください。

1. アプリを登録する
Facebook 開発者 にアクセスし、「新しいアプリケーションを作成」を押して、アプリの登録を行う。
App Display Name: アプリ名
App Namespace: アプリに割り当てられる固有ディレクトリ
※初めて登録する際には、携帯電話かクレジットカードでの認証が必要になる。

登録後、編集画面で下記の情報を入力する。
連絡先メールアドレス: email アドレス
ウェブサイト: ユーザによる認証動作後にリダイレクトする URL(「4.」でアップする php)
※その他はそのままでも問題ない。

2. 使うキーを確認する
登録後のページにある「App ID/API Key」と、「アプリの秘訣(Secret Key のこと)」を確認する。これが今後必要となるキー。

3. 必要となるライブラリをインストールする
下記からダウンロードし、アプリとするディレクトリにアップする。
facebook/php-sdk: facebook/php-sdk - GitHub, /アプリのディレクトリ/facebook
※元々は「src」ディレクトリだったものをここでは「facebook」にリネームしている。また、アップするものは「src」ディレクトリ内の全て。

4. 認証受け渡し用の php を用意する
下記に必要な事項を埋め、アプリのディレクトリにアップする。
<?php
require_once 'facebook/facebook.php';

$facebook = new Facebook(array(
  'appId' => 'xxxxxxxxxxxxxxxx', // 「2.」で確認した「App ID/API Key」
  'secret' => 'xxxxxxxxxxxxxxxx', // 「2.」で確認した「アプリの秘訣」
  'cookie' => true
));

$fb_user = $facebook->getUser();

if (!$_GET[code]) {
// ユーザの認証前、Facebook にリダイレクトする
// News Feed に post する publish_stream を記載
  $par = array('scope' => 'publish_stream');
  echo "<script type='text/javascript'>location.href = '". $facebook->getLoginUrl($par). "';</script>";
} else {
// ユーザの認証後、リダイレクトで帰ってきた後
  $access_token = $facebook->getAccessToken();

  echo "<script type='text/javascript'>location.href = 'アプリ本体の URL';</script>";
}
?>


5. post する
下記の php をアプリのディレクトリにアップする
<?php
require_once 'facebook/facebook.php';

$facebook = new Facebook(array(
  'appId' => 'xxxxxxxxxxxxxxxx', // 「2.」で確認した「App ID/API Key」
  'secret' => 'xxxxxxxxxxxxxxxx' // 「2.」で確認した「アプリの秘訣」
));

$attachment = array(
  'access_token' => 'xxxxxxxxxxxxxxxx'「4.」で取得した access_token
  'message' => 'テスト', // post する本文
);

$facebook->api('/me/feed', 'POST', $attachment);
echo "<script type='text/javascript'>alert('「". $status. "」をpostしました!');</script>\n";
?>

[php で OAuth を使ってみる:第弐回] tumblr. に引用を post する

tumblr. に OAuth を使って post してみる。
※この情報は 2012 年 1 月現在のものです。仕様が変更される可能性は充分にあるので、ご了承ください。

1. アプリを登録する
Register your application にアクセスし、アプリの登録を行う。
Application name: アプリ名
Application webSite: アプリ本体の URL
Application description: アプリの説明
Administrative contact email: email アドレス
Default callback URL: ユーザによる認証動作後にリダイレクトする URL(「4.」でアップする php)
Icon: アイコン

※全ての情報は登録後でも変更できるので、気楽に。

2. 使うキーを確認する
登録後のページにある「OAuth Consumer Key」と、「Show secret key」をクリックして表示される「Secret Key」を確認する。これが今後必要となるキー。

3. 必要となるライブラリをインストールする
下記からダウンロードし、アプリとするディレクトリにアップする。
PEAR: PEAR, /アプリのディレクトリ/PEAR
HTTP_OAuth: HTTP_OAuth, /アプリのディレクトリ/HTTP
HTTP_Request2: HTTP_Request2, /アプリのディレクトリ/HTTP/Request2
Net_URL2: Net_URL2, /アプリのディレクトリ/Net

4. 認証受け渡し用の php を用意する
下記に必要な事項を埋め、アプリのディレクトリにアップする。
<?php
include 'HTTP/OAuth/Consumer.php';

$consumer_key = 'xxxxxxxxxxxxxxxx'; // 「2.」で確認した「OAuth Consumer Key」
$consumer_secret = 'xxxxxxxxxxxxxxxx'; // 「2.」で確認した「Secret Key」

$http_request = new HTTP_Request2();
$http_request->setConfig('ssl_verify_peer', false);

$consumer = new HTTP_OAuth_Consumer($consumer_key, $consumer_secret);
$consumer_request = new HTTP_OAuth_Consumer_Request;
$consumer_request->accept($http_request);
$consumer->accept($consumer_request);

session_start();

if (empty($_GET['oauth_verifier'])) {
// ユーザの認証前、tumblr. にリダイレクトする
  $consumer->getRequestToken('http://www.tumblr.com/oauth/request_token');

  $_SESSION['request_token'] = $consumer->getToken();
  $_SESSION['request_token_secret'] = $consumer->getTokenSecret();

  $auth_url = $consumer->getAuthorizeUrl('http://www.tumblr.com/oauth/authorize');

  header('Location: '. $auth_url);
} else {
// ユーザの認証後、リダイレクトで帰ってきた後
  $consumer->setToken($_SESSION['request_token']);
  $consumer->setTokenSecret($_SESSION['request_token_secret']);

  $consumer->getAccessToken('http://www.tumblr.com/oauth/access_token', $_GET['oauth_verifier']);

  echo "<script type='text/javascript'>location.href = 'アプリ本体の URL';</script>";
}
?>

5. post する
下記の php をアプリのディレクトリにアップする
<?php
require_once 'HTTP/OAuth/Consumer.php';

$consumer_key = 'xxxxxxxxxxxxxxxx'; // 「2.」で確認した「OAuth Consumer Key」
$consumer_secret = 'xxxxxxxxxxxxxxxx'; // 「2.」で確認した「Secret Key」

$access_token = 'xxxxxxxxxxxxxxxx'; // 「4.」で取得した access_token
$access_token_secret = 'xxxxxxxxxxxxxxxx'; // 「4.」で取得した access_token_secret

$http_request = new HTTP_Request2();
$http_request->setConfig('ssl_verify_peer', false);

$consumer = new HTTP_OAuth_Consumer($consumer_key, $consumer_secret);
$consumer_request = new HTTP_OAuth_Consumer_Request;
$consumer_request->accept($http_request);
$consumer->accept($consumer_request);

$consumer->setToken($access_token);
$consumer->setTokenSecret($access_token_secret);
// 今回の post のタイプは「引用」
$params = array(
  'type' => 'quote',
  'quote' => 'テスト', // post する本文
  'source' => 'アプリ本体の URL など'
);

$api_url = 'http://www.tumblr.com/api/write';
$response = $consumer->sendRequest($api_url, $params);
echo "<script type='text/javascript'>alert('「". $status. "」をpostしました!');</script>\n";
?>

「引用」以外で必要な項目は公式ページを参考に。
Tumblr API v1 | Tumblr

1/21/2012

京都で遊ぼう!の SNS 連携を強化しました

京都で遊ぼう! の SNS 連携を強化しました。


現在連携できる対象サービスは以下の通りです。
文字 post
  • Twitter
  • Facebook
  • tumblr.

画像 post
  • TwitPic
  • Facebook
  • tumblr.
  • Flickr

※iPhone などの iOS では input type='hidden' が無効化されるのでスマートフォンでの画像アップロードは Android でのみ有効です。

京都で遊ぼう!説明ページ
京都で遊ぼう!

[php で OAuth を使ってみる:第壱回] Twitter に文字を post する

Twitter に OAuth を使って post してみる。
※この情報は 2012 年 1 月現在のものです。仕様が変更される可能性は充分にあるので、ご了承ください。

1. アプリを登録する
Create an application | Twitter Developers にアクセスし、アプリの登録を行う。
Name: アプリ名
Description: アプリの説明
WebSite: アプリ本体の URL
Callback URL: ユーザによる認証動作後にリダイレクトする URL(「5.」でアップする php)

※全ての情報は登録後でも変更できるので、気楽に。

2. 書き込みできる権限に変更する
アプリの詳細ページに「Settings」というタブがあるので、それをクリックし、「Application Type」の「Access」を「Read and Write」に変更し、保存する。

3. 使うキーを確認する
「Details」タブを押し、「Consumer key」と「Consumer secret」を確認する。これが今後必要となるキー。

4. 必要となるライブラリをインストールする
下記からダウンロードし、アプリとするディレクトリにアップする。
PEAR: PEAR, /アプリのディレクトリ/PEAR
HTTP_OAuth: HTTP_OAuth, /アプリのディレクトリ/HTTP
HTTP_Request2: HTTP_Request2, /アプリのディレクトリ/HTTP/Request2
Net_URL2: Net_URL2, /アプリのディレクトリ/Net

5. 認証受け渡し用の php を用意する
下記に必要な事項を埋め、アプリのディレクトリにアップする。
<?php
include './HTTP/OAuth/Consumer.php';

$consumer_key = 'xxxxxxxxxxxxxxxx'; // 「3.」で確認した「Consumer key」
$consumer_secret = 'xxxxxxxxxxxxxxxx'; // 「3.」で確認した「Consumer secret」

$http_request = new HTTP_Request2();
$http_request->setConfig('ssl_verify_peer', false);

$consumer = new HTTP_OAuth_Consumer($consumer_key, $consumer_secret);
$consumer_request = new HTTP_OAuth_Consumer_Request;
$consumer_request->accept($http_request);
$consumer->accept($consumer_request);

session_start();

if (empty($_GET['oauth_verifier'])) {
// ユーザの認証前、Twitter にリダイレクトする
  $callback = 'callback する URL'; // この場合はこの php 本体
  $consumer->getRequestToken('https://api.twitter.com/oauth/request_token', $callback);

  $_SESSION['request_token'] = $consumer->getToken();
  $_SESSION['request_token_secret'] = $consumer->getTokenSecret();

  $auth_url = $consumer->getAuthorizeUrl('https://api.twitter.com/oauth/authorize');

  header('Location:'. $auth_url);
} else {
// ユーザの認証後、リダイレクトで帰ってきた後
  $consumer->setToken($_SESSION['request_token']);
  $consumer->setTokenSecret($_SESSION['request_token_secret']);
  $consumer->getAccessToken('https://api.twitter.com/oauth/access_token', $_GET['oauth_verifier']);

  $_SESSION['access_token'] = $consumer->getToken();
  $_SESSION['access_token_secret'] = $consumer->getTokenSecret();

  echo "<script type='text/javascript'>location.href = 'アプリ本体の URL';</script>";
}
?>

6. post する
下記の php をアプリのディレクトリにアップする
<?php
require_once 'HTTP/OAuth/Consumer.php';

$consumer_key = 'xxxxxxxxxxxxxxxx'; // 「3.」で確認した「Consumer key」
$consumer_secret = 'xxxxxxxxxxxxxxxx'; // 「3.」で確認した「Consumer secret」
$access_token = 'xxxxxxxxxxxxxxxx'; // 「5.」で取得した access_token
$access_token_secret = 'xxxxxxxxxxxxxxxx'; // 「5.」で取得した access_token_secret

$http_request = new HTTP_Request2();
$http_request->setConfig('ssl_verify_peer', false);

$consumer = new HTTP_OAuth_Consumer($consumer_key, $consumer_secret);
$consumer_request = new HTTP_OAuth_Consumer_Request;
$consumer_request->accept($http_request);
$consumer->accept($consumer_request);

$consumer->setToken($access_token);
$consumer->setTokenSecret($access_token_secret);

$api_url = 'http://api.twitter.com/1/statuses/update.json';
$params = array(
  'status' => 'テスト' // post する本文
);
$response = $consumer->sendRequest($api_url, $params, 'POST');
echo "<script type='text/javascript'>alert('「". $status. "」をpostしました!');</script>\n";
?>

POST statuses/update | Twitter Developers

1/17/2012

京都での観光名所やホテル等の観光案内(ルート検索付き)を作ってみた

電車の乗り換え案内は色々とありますが、バスの乗り換え案内って見たことなくて、特に京都のようなバス地域の場合は重要だと思ってます。そこで、こんなのを作ってみました。GPS で出発地を検出し、目的地までのルートを検索して表示したり、電話番号の表示や、神社仏閣の場合は Wikipedia の情報も表示したりします。出発地や目的地の周辺 1km で駅やバス停を検索して最寄り駅としています。


一度検出した経路は保存できるので、京都以外で試したあと、実際に京都でアクセスするときにも、保存したデータを呼び出せるのですぐに閲覧できます。


また、Twitter と Facebook 連携を付けています。検索などを行って神社仏閣や駅、ホテルなどのページにアクセスすると、下記のようなボタンに出会います。


これらのボタンを押して Twitter/Facebook と接続すると、post できるようになります。


その他の使い方は下記をご覧ください。
京都で遊ぼう!

1/13/2012

Blogger の新 UI

Blogger の新 UI ってのを使ってみてるんだけど、相変わらずプレビューは別タブなのね...。
はてなブログの方がまだいいな。

っていうか、昔の Blogger の UI が一番便利だったなぁ...。

1/05/2012

IdontCare を公開しました

Chrome 機能拡張 IdontCare を公開しました。Facebook で「いいね」を「どうでもいいね」などに置換します。


オムニバーに出るアイコンを押して、置換前と置換後の文字列を設定し、「置換しちゃう」を押すと置換します。フィードなどのリアルタイムな更新には適応してませんので、置換したいときに押して遊んでください。


興味のある方は、以下からどうぞ。

IdontCare: Google Chrome 機能拡張