自主学習として、Twitter_botを製作しています。
開発環境はMAMP(PHP 5.6.10)です。
また、種々の理由からComposerでインストールするTwitterOAuthではなく、直接ダウンロードできるTwistOAuthを利用することにしました。
(こちらのサイトです。→https://github.com/mpyw/TwistOAuth)
TwistOAuthのpharファイルをrequireすると、以下が表示されます。
localhost ページは機能していません
localhost では現在このリクエストを処理できません。
500
これは、pharファイルの読み込みが悪いのでしょうか?
それとも、全く別の要因でしょうか?
申し訳ありませんが、宜しくお願い致します。
(以下にソースコードを記載します。)
php
1<?php 2require 'TwistOAuth.phar'; 3 4define('CONSUMER_KEY', 'CY'); 5define('CONSUMER_SECRET', 'CS'); 6define('ACCESS_TOKEN', 'AT'); 7define('ACCESS_TOKEN_SECRET', 'AS'); 8 9$header = 'Content-Type: text/plain; charset=utf-8'; 10 11$to = new TwistOAuth('CONSUMER_KEY', 'CONSUMER_SECRET', 'ACCESS_TOKEN', 'ACCESS_TOKEN_SECRET');
★2016-03-29 23:08 追記
MAMPのphp_error.log
を確認しました。
sh
1[29-Mar-2016 23:07:09 Asia/Tokyo] PHP Fatal error: Uncaught exception 'TwistException' with message 'Invalid or expired token.' in phar:///Applications/MAMP/htdocs/twitter_bot/TwistOAuth.phar/TwistOAuth.php:831 2Stack trace: 3#0 phar:///Applications/MAMP/htdocs/twitter_bot/TwistOAuth.phar/TwistOAuth.php(352): TwistOAuth::decode(Resource id #5, '{"errors":[{"co...') 4#1 /Applications/MAMP/htdocs/twitter_bot/bot.php(12): TwistOAuth->get('statuses/user_t...', 10) 5#2 {main} 6 thrown in phar:///Applications/MAMP/htdocs/twitter_bot/TwistOAuth.phar/TwistOAuth.php on line 831
エラー文を見ましたが、pharが悪い?くらいしか分からないので、取り急ぎ各PHPをrequireしてみます。
★2016-03-30 00:20 追記
いただいたご意見、および他のサイトも参考に、以下のようにコードを修正しました。
php
1<?php 2require 'TwistOAuth.php'; 3require 'TwistException.php'; 4 5define('CONSUMER_KEY', 'CY'); 6define('CONSUMER_SECRET', 'CS'); 7define('ACCESS_TOKEN', 'AT'); 8define('ACCESS_TOKEN_SECRET', 'AS'); 9 10$header = 'Content-Type: text/plain; charset=utf-8'; 11 12try { 13 $connection = new TwistOAuth('CONSUMER_KEY', 'CONSUMER_SECRET', 'ACCESS_TOKEN', 'ACCESS_TOKEN_SECRET'); 14 $res = $connection->post('statuses/update', [ 15 'status' => 'こんにちは' 16 ]); 17 header($header, true, 200); 18 echo "ツイートしました"; 19 } catch (Exception $e) { 20 header($header, true, $e->getCode() ?: 500); 21 echo "ツイート失敗: {$e->getMessage()}\n"; 22}
今度はInvalid or expired token.
とエラーが出力されてしまいます。
デベロッパーサイトが発行したアクセストークンはいきているようです。
この場合、クッキーかなにかでトークンが置き換わってしまったのでしょうか?
(見当違いでしたら申し訳ありません。)
★2016-03-30 01:09 追記
いただいたご意見、および他のサイトも参考に、以下のようにコードを修正しました。
php
1<?php 2require 'TwistOAuth.php'; 3require 'TwistException.php'; 4 5define('CONSUMER_KEY', 'CY'); 6define('CONSUMER_SECRET', 'CS'); 7define('ACCESS_TOKEN', 'AT'); 8define('ACCESS_TOKEN_SECRET', 'AS'); 9 10$header = 'Content-Type: text/plain; charset=utf-8'; 11 12try { 13 $connection = new TwistOAuth(CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRET); 14 $res = $connection->post('statuses/update', [ 15 'status' => 'こんにちは' 16 ]); 17 header($header, true, 200); 18 echo "ツイートしました"; 19 } catch (Exception $e) { 20 header($header, true, $e->getCode() ?: 500); 21 echo "ツイート失敗: {$e->getMessage()}\n"; 22}
申し訳ありません、ベストアンサーは迷いました。
ご納得いただけないかもしれませんが、何卒ご容赦ください。

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/03/29 16:07
2016/03/29 16:30