
PHPのPEARのServices_Twitterのエラーについて
PHPでtwitterAPIを扱いたいと思い、PEARのServices_Twitterを使っています。
しかし、どのようなスクリプトを書いても、「Unsupported endpoint statuses」という
エラーメッセージが出る一方で、動きません。
スクリプトミスの可能性も当然あるのですが、多くのWEBサイトにある多数の
スクリプトサンプルを試してみたのですが、全て上記エラーのみが表示される状況で、
スクリプトミスというのがすこし考えがたい状況です。
レンタルサーバを使っていまして、twitterAPIへは、OAuth認証の結果をもとに、
Services_Twitterのインスタンスを作成しています。
Services_Twitter自体はしっかり動いているので、
インクルードのミスなどはないと思いますが、レンタルサーバはPEARないので、
手動インストールしてインクルードしています。
以上の状況から、スクリプトミスではない場合、考えられるエラー原因について
想定できることがありましたら、教えていただけると嬉しいです。
ご報告内容が不足している場合は、申し訳ございません。
ご指摘いただければ幸いです。
それでは、恐れ入りますが、宜しくお願いいたします。
No.2ベストアンサー
- 回答日時:
(一部問題はありましたが)こちらでは提示されたコードも
問題なく動作しました。
ライブラリ等は正常に読み込まれているでしょうか?
『Unsupported』とありますので、サポートされていない
関数か何かを呼び出しているのだと思いますが・・・
Services_Twitterは「Services」以下のフォルダだけでなく、
「data」フォルダも必要ですが、すべてきちんとアップロード
してありますか?
※Servicesフォルダと同階層にアップしてある必要があります。
一部問題があった件についてですが、以下の部分になります。
// get recent posts on public timeline
$response = $twitter->statuses->public_timeline();
if (count($response->status) > 0) {
echo '<h2>Recent public timeline updates</h2>';
foreach ($response->status as $status) {
このままだと取得したタイムラインが表示されませんので、
以下のように修正します。
// get recent posts on public timeline
$response = $twitter->statuses->public_timeline();
if (count($response) > 0) {
echo '<h2>Recent public timeline updates</h2>';
foreach ($response as $status) {
※修正するのは2行だけです。
(「$response->status」を「$response」にしてあります。)
それから、気になった事なのですが、Services_Twitterと
HTTP_OAuthの組み合わせの他に、twitteroauthを使用して
いますが、どちらか一つに統一してはいかがでしょうか?
Services_TwitterとHTTP_OAuthの組み合わせで利用する場合
は、以下のコードを修正していけば良いと思います。
http://zuzara.com/blog/2010/01/20/complete-worki …
※「http://zuzara.com/twitter_oauth.php」は、自分のアプリ
のURLに変更します。
※「http_redirect()」が使用できない場合は、「header()」が
代用できます。
丁寧にご教示いただきましてありがとうございました。お礼が遅くなり申し訳ございません。
ご指摘いただいた内容を修正させていただいた試したところ、エラー内容が変わりまして、「Call to undefined function json_decode() 」となりました。これは、現在使っているServer QueenというレンタルサーバのPHPバージョンが古くServices_Twitterで使用しているjson_decode()という関数が使えずに、エラーになっているようです。PHPのバージョンアップが出来れば上記エラーもなくなり、ご指摘いただいた内容でうまくいきそうです。別の環境でも試してみます。ありがとうございました。
No.1
- 回答日時:
「Unsupported endpoint statuses」の後ろはどのようなエラーに
なっていますか?
「Unsupported endpoint statuses/getHomeTimeline」なら
「$xxxxx->statuses->home_timeline();」に、
「Unsupported endpoint statuses/getPublicTimeline」なら
「$xxxxx->statuses->public_timeline();」にという具合で
コードを修正してみてください。
※その他のエラーの場合も同じように修正する必要があると
思います。
http://www.yuigahama.org/?p=315
http://apiwiki.twitter.com/Twitter-API-Documenta …
この回答への補足
Unsupported endpoint statusesの後ろには何もついていない状況なのですが、これはエラーの出し方がおかしいのでしょうか?長くて恐縮ですが、私が作成したスクリプトを下記に掲載させていただきますので、可能な範囲で結構ですので、ご確認いただければ幸いです。
<?php
session_start();
require_once("inc/twitteroauth.php");
/* OAuth Data */
define("CONSUMER_KEY", "********");
define("CONSUMER_SECRET", "********");
//startボタンが押された場合
if (isset($_POST["start"])){
//リクエストトークン取得、ユーザ承認
$rdurl = TokenInit();
$rdurl = sprintf("Location: %s", $rdurl);
header($rdurl);
//アクセストークン取得
}elseif(($_SESSION['status'] == 'READY') && $_GET["oauth_token"]){
AccessToken();
require_once("inc/Services/Twitter.php");
require_once("inc/HTTP/OAuth/Consumer.php");
//twitter操作(Services_Twitter)
try{
$twitter = new Services_Twitter();
$oauth = new HTTP_OAuth_Consumer(CONSUMER_KEY, CONSUMER_SECRET, $_SESSION['AccessToken'], $_SESSION['AccessTokenSec']);
$twitter->setOAuth($oauth);
// get recent posts on public timeline
$response = $twitter->statuses->public_timeline();
if (count($response->status) > 0) {
echo '<h2>Recent public timeline updates</h2>';
foreach ($response->status as $status) {
echo '<div class="item"><img src="' . $status->user->profile_image_url . '" class="img" />';
echo $status->text . '<br/>';
echo 'By: <em>' . $status->user->screen_name . '</em> on ' . $status->created_at . '</div>';
}
}
} catch (Services_Twitter_Exception $e) {
echo $e->getMessage();
}
//初期画面
}else{
print<<<END
<form action="login.php" method="post">
<p>Services Twitter Test</p>
<input type="submit" name="start" value="START" />
</form>
END;
}
※functionは別途記載いたします。
/* 認証初期化 */
function TokenInit() {
//OAuth接続初期化
$tOAuth = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET);
//認証トークン取得
$getToken = $tOAuth->getRequestToken();
//認証トークン格納
$_SESSION['RequestToken'] = $getToken['oauth_token'];
//認証トークン格納
$_SESSION['RequestTokenSec'] = $getToken['oauth_token_secret'];
//ステータス更新
$_SESSION['status'] = 'READY';
//リクエストリンク生成
return $tOAuth->getAuthorizeURL($getToken['oauth_token']);
}
/* アクセス認証 */
function AccessToken() {
//OAuth接続初期化
$tOAuth = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET,
$_SESSION['RequestToken'], $_SESSION['RequestTokenSec']);
//アクセストークン取得
$getToken = $tOAuth->getAccessToken();
//アクセストークン格納
$_SESSION['AccessToken'] = $getToken['oauth_token'];
//アクセストークン格納
$_SESSION['AccessTokenSec'] = $getToken['oauth_token_secret'];
}
?>
お礼画面への追記で大変恐縮です。上記がfunctionの全てです。色々とありがとうございます。可能な範囲で教えていただければ幸いです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) bashのgrepで複数の検索、かつスクリプト内で改行する方法を教えてください。 1 2022/10/06 20:09
- その他(プログラミング・Web制作) mariadbでのエラー 1 2022/11/15 12:31
- PHP phpの imap_search で漢字コード 1 2022/09/06 17:32
- Windows 10 2023年05月03現在Win7sp1からWin10への無償アップグレードについて 6 2023/05/04 16:36
- Excel(エクセル) EXCELの外部データ取得ができない 1 2023/03/23 09:03
- その他(プログラミング・Web制作) .htaccessファイルの修正がこれで問題ないかどうか 1 2022/04/21 08:42
- 会社・職場 社会人4年目 仕事ができない どうすればいい? タイトルの通り全く仕事が出来ず、今後どうしようか等悩 7 2022/06/25 18:49
- UNIX・Linux redmineにメールを飛ばす方法 1 2022/09/13 22:02
- UNIX・Linux ubuntuサーバーを久々に再起動したらネットにつながらなくなった。 1 2022/06/06 16:21
- Perl perlをバージョンアップしたら、今まで正常に動いていたプログラムが、エラーになってしまった 3 2022/10/05 15:44
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PHP8でWarning:Undefined varia...
-
composerをインストールしたい...
-
phpの問い合わせフォームを作っ...
-
配列の値の更新方法について
-
PHPの構文で間違えが分からない
-
SFTPなどは使わないホームペー...
-
$_SESSIONに渡した後はそのまま...
-
($_POST['email']??"", ・・・...
-
phpのエラーについて
-
PHP MySql 画像を取得
-
marginの値でマイナス値を設定...
-
submitで思うようにページが遷...
-
HTML PHP ラジオボタンのイベント
-
php でqiitaのサイトにあったフ...
-
SplFileObject を利用したとき...
-
PHPの勉強してます。 配列のと...
-
BASIC認証のフォームをデザイン...
-
アップロードファイルを表示す...
-
複数のパソコンの中の1つのパソ...
-
返信機能のツリー構造の深さを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
phpの問い合わせフォームを作っ...
-
composerをインストールしたい...
-
PHP8でWarning:Undefined varia...
-
marginの値でマイナス値を設定...
-
phpでcookieがうまく保存されない
-
SplFileObject を利用したとき...
-
PHPSpreadsheetを使って関数を...
-
PHPSpreadsheetによる書き出し...
-
PHP8を使うと、大量のWarningが...
-
フォームで戻った際に入力済み...
-
PostgreSQLからCSV形式でエクス...
-
PHPを使って、別サイトの一部を...
-
BASIC認証のフォームをデザイン...
-
入力した部分を表示させたまま...
-
【初心者】XAMPPのapacheの(恐...
-
ログイン機の付きの掲示板サイ...
-
ワードプレスサイト PHP8.0.25...
-
Postgresの特定のカラムからス...
-
PHPで画像の渡しが上手く行きま...
-
PHPの勉強してます。 配列のと...
おすすめ情報