- 締切済み
Twitter Oauth認証がエラーになります。
現在Twitterログインアプリを作りいのですが、 下記のようなエラーが出てしまいます。 Fatal error: Class 'Codebird' not found in /var/www/html/callback.php on line 8 認証にはcodebird.phpというライブラリを使っております。 (https://github.com/mynetx/codebird-php 下記コードのソースもこちらです。) 分かる方がいらっしゃれば教えて原因を教えて頂けると非常に助かります。 宜しくお願い致します。。 以下仕様 <a href="callback.php">twitterでログイン</a> これをクリックすると、callback.phpに飛び認証が行われるという具合です。 callback.php内ではconfig.phpとcodebird.phpを読み込んでます。 以下callback.phpコード var_dump($me); が実行出来ず、先に記したエラーが起きます。 <?php require_once('config.php'); require_once('codebird.php'); session_start(); Codebird::setConsumerKey(CONSUMER_KEY, CONSUMER_SECRET); //上記の定数はconfig.phpに記載しており、スペルミスはありません。 $cb = Codebird::getInstance(); if (! isset($_GET['oauth_verifier'])) { // gets a request token $reply = $cb->oauth_requestToken(array( 'oauth_callback' => 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] )); // stores it $cb->setToken($reply->oauth_token, $reply->oauth_token_secret); $_SESSION['oauth_token'] = $reply->oauth_token; $_SESSION['oauth_token_secret'] = $reply->oauth_token_secret; // gets the authorize screen URL $auth_url = $cb->oauth_authorize(); header('Location: ' . $auth_url); die(); } else { // gets the access token $cb->setToken($_SESSION['oauth_token'], $_SESSION['oauth_token_secret']); $reply = $cb->oauth_accessToken(array( 'oauth_verifier' => $_GET['oauth_verifier'] )); // $_SESSION['oauth_token'] = $reply->oauth_token; // $_SESSION['oauth_token_secret'] = $reply->oauth_token_secret; $cb->setToken($reply->oauth_token, $reply->oauth_token_secret); $me = $cb->account_verifyCredentials(); var_dump($me); exit; }
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- kt818
- ベストアンサー率0% (0/0)
2.4.1 releaseのようですから, Codebird::setConsumerKey(CONSUMER_KEY, CONSUMER_SECRET); =>\Codebird\Codebird::setConsumerKey('YOURKEY', 'YOURSECRET'); $cb = Codebird::getInstance(); =>$cb = \Codebird\Codebird::getInstance(); そして,srcの中にあるcodebird.phpとcacert.pemを同じディレクトリに設定 して,試してみられたら。 ちなみに,私はそれでうまくいきました。
バージョンアップで変更があったからではないでしょうか? https://github.com/mynetx/codebird-php 少なくとも最新のドキュメントを見る限りはこの書き方になってます。 最新版をもう一度ダウンロードされてみては?
Codebirdのソースは名前空間使ってるので $cb = Codebird::getInstance(); では呼べません。 正しくは $cb = \Codebird\Codebird::getInstance(); です。 (ちなみに私もライブラリ自作してます https://github.com/Certainist/UltimateOAuth )
- t_ohta
- ベストアンサー率38% (5292/13826)
> require_once('codebird.php');が失敗している理由は例えば何があるのでしょうか。 > 同じdirectoryにはあるのですが、、、 同じディレクトリにパスが通ってないって事はありませんか? require_once('./codebird.php'); としてうまく行けば include_path の設定が悪いんだと思います。
お礼
再びありがとうございます。 やはりダメでした。 今まで大丈夫だったのでたぶんパスは問題ないかと思うのですが、、、
- t_ohta
- ベストアンサー率38% (5292/13826)
エラーメッセージは Codebird というクラスが見つかりませんと言ってる訳ですから、require_once('codebird.php'); に失敗しているか、codebird.php の中身に問題があるのではないでしょうか。
お礼
早速のご回答ありがとうございます。 require_once('codebird.php');が失敗している理由は例えば何があるのでしょうか。 同じdirectoryにはあるのですが、、、 codebird.phpは公開ソースをコピーして使っているので、 正直僕は解読できないような気がしてます。 一度しっかりよんでみたいと思います。 ありがとうございます。
お礼
ご回答ありがとうございます。 $cb =¥Codebird¥Codebird::getInstance();に変更してみたのですが、全く同じエラーが出てしまいました。。 http://dotinstall.com/lessons/tw_connect_php_v2/21907 ここでは出来ているのですが、どういうことなのでしょうか。。 よろしくお願いします。 ライブラリ拝見致しました。 初心者にもやりやすいように書かれてるようですので、ぜひ見させて頂きたいと思います。 ありがとうございます。