1/22/2012

[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

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.