LoginSignup
12
12

More than 5 years have passed since last update.

PHP + TwistOAuthでタイムラインを読み込む最短パターン

Last updated at Posted at 2014-12-02

こんにちは。Twitterを利用して協調フィルタリングを実装してみようと思いPHPに手を出すことにしました。
初めてでタイムライン読み込みさえハマってしまったので、反省程度に残しておきます。
動作確認やテンプレートにでもお使いください。

(2014/12/03更新) @mpyw 様から、TwistOAuthを利用したより良いコードを提示して頂いた為、誠に勝手ながらこちらで引用させて頂きたいと思います。

<?php

require_once 'TwistOAuth.php';

function h($str, $double = true) {
    return htmlspecialchars($str, ENT_QUOTES, 'UTF-8', $double);
}

date_default_timezone_set('Asia/Tokyo');

$ck = '';
$cs = '';
$at = '';
$as = '';

try {
    $to = new TwistOAuth($ck, $cs, $at, $as);
    $statuses = $to->get('statuses/home_timeline', ['count' => '20']);
} catch (TwistException $e) {
    $error = $e->getMessage();
}

header('Content-Type: text/html; charset=utf-8');

?>
<!DOCTYPE html>
<html>
<head>
    <title>PHP TwistOAuth test</title>
</head>
<body>
<?php if (isset($error)): ?>
    <p style="color:red;"><?=h($error)?></p>
<?php else: ?>
    <ul>
<?php foreach ($statuses as $status): ?>
        <li style="margin:10px;">
            <ul>
                <li>名前 … <?=h($status->user->screen_name)?></li>
                <li>スクリーンネーム … @<?=$status->user->screen_name?></li>
                <li>現在地 … <?=h($status->user->location)?></li>
                <li>自己紹介 … <?=h($status->user->description)?></li>
                <li>時刻 … <?=date('Y/m/d H:i:s', strtotime($status->created_at))?></li>
                <li>本文 … <?=h($status->text, false)?></li> 
            </ul>
        </li>
<?php endforeach; ?>
    </ul>
<?php endif; ?>
</body>
</html>

(下記が元バージョンになります)

使ったもの: PHP、twitteroauth (GitHub: abraham)

<html>
<head>
    <meta charset="UTF-8">
    <title>PHP twitteroauth test</title>
</head>
<body>

<?php
// twitteroauth.phpを読み込む。パスは適宜変更してください
require_once("twitteroauth.php");

// Consumer key
$consumer_key = "コンシューマーキー";
// Consumer secret
$consumer_secret = "コンシューマーシークレット";
// Access Token
$access_token = "アクセストークン";
// Access Token Secret
$access_token_secret = "アクセストークンシークレット";

// OAuthオブジェクト生成
$to = new TwitterOAuth($consumer_key,$consumer_secret,$access_token,$access_token_secret);

// ホームタイムラインを取得。JSONデコードは済んでいる
$req = $to->get("statuses/home_timeline",array("count"=>"20"));

// JSONの配列(結果)を表示
echo "<pre>";
var_dump($result);
echo "</pre>";

?>

</body>
</html>
12
12
7

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
12