dポイントプレゼントキャンペーン実施中!

現在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;
}

A 回答 (5件)

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を同じディレクトリに設定
して,試してみられたら。

ちなみに,私はそれでうまくいきました。
    • good
    • 1

バージョンアップで変更があったからではないでしょうか?



https://github.com/mynetx/codebird-php
少なくとも最新のドキュメントを見る限りはこの書き方になってます。
最新版をもう一度ダウンロードされてみては?
    • good
    • 0

Codebirdのソースは名前空間使ってるので



$cb = Codebird::getInstance();

では呼べません。
正しくは

$cb = \Codebird\Codebird::getInstance();

です。


(ちなみに私もライブラリ自作してます https://github.com/Certainist/UltimateOAuth )
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
$cb =¥Codebird¥Codebird::getInstance();に変更してみたのですが、全く同じエラーが出てしまいました。。


http://dotinstall.com/lessons/tw_connect_php_v2/ …
ここでは出来ているのですが、どういうことなのでしょうか。。

よろしくお願いします。

ライブラリ拝見致しました。
初心者にもやりやすいように書かれてるようですので、ぜひ見させて頂きたいと思います。
ありがとうございます。

お礼日時:2013/05/31 20:26

> require_once('codebird.php');が失敗している理由は例えば何があるのでしょうか。


> 同じdirectoryにはあるのですが、、、

同じディレクトリにパスが通ってないって事はありませんか?
require_once('./codebird.php'); としてうまく行けば include_path の設定が悪いんだと思います。
    • good
    • 0
この回答へのお礼

再びありがとうございます。

やはりダメでした。
今まで大丈夫だったのでたぶんパスは問題ないかと思うのですが、、、

お礼日時:2013/05/31 20:12

エラーメッセージは Codebird というクラスが見つかりませんと言ってる訳ですから、require_once('codebird.php'); に失敗しているか、codebird.php の中身に問題があるのではないでしょうか。

    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございます。

require_once('codebird.php');が失敗している理由は例えば何があるのでしょうか。
同じdirectoryにはあるのですが、、、

codebird.phpは公開ソースをコピーして使っているので、
正直僕は解読できないような気がしてます。

一度しっかりよんでみたいと思います。

ありがとうございます。

お礼日時:2013/05/31 17:41

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!