質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

1431閲覧

composer.json

KosukeYamamoto

総合スコア220

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

1グッド

0クリップ

投稿2016/01/16 23:54

{
"require" : {
"facebook/php-sdk-v4" : "~5.0"
},
"autoload": {
"psr-4": {
"MyApp\": "lib/"
}
}
}
{
"require": {
"abraham/twitteroauth": "^0.6.2"
}
}

conposer.jsonでこのように指示し

libの中にFacebookLogin.phpを作っているのですが、
No such class: FacebookLoginと帰ってきます。

どうすればいいでしょうか?

ドットインストールのフェイスブックログインの通りにしています。

ちなみにindex.phpは

<?php require_once(__DIR__ . '/config.php'); require_once(__DIR__ . '/config2.php'); $fbLogin = new MyApp\FacebookLogin(); $twitterLogin = new MyApp\TwitterLogin(); if ($twitterLogin->isLoggedIn()) { $me = $_SESSION['me']; $twitter = new MyApp\Twitter($me->tw_access_token, $me->tw_access_token_secret); $tweets = $twitter->getTweets(); MyApp\Token2::create(); } if ($fbLogin->isLoggedIn()) { $me = $_SESSION['me']; $fb = new MyApp\Facebook($me->fb_access_token); $userNode = $fb->getUserNode(); $posts = $fb->getPosts(); MyApp\Token::create(); } ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>Twitter Connect!</title> <style> #container { width: 500px; margin: 0 auto; } h1 { font-size: 18px; border-bottom: 1px solid #ccc; padding: 3px 0; } #login { text-align: center; margin: 70px auto; } #logout { float: right; } </style> </head> <body> <div id="container"> <h2>My Timeline</h2> <?php if ($fbLogin->isLoggedIn()) : ?>
<div id="logout"> <form action="logout.php" method="post"> <input type="submit" value="Log out"> <input type="hidden" name="token" value="<?= h($_SESSION['token']); ?>"> </form> </div> <div id="profile"> <img src="http://graph.facebook.com/<?= h($me->fb_user_id); ?>/picture" class="pic"> <h1><a href="<?= h($me->fb_link); ?>"><?= h($me->fb_name); ?></a></h1> <p><?= h($userNode['email']); ?></p> </div> <ul> <?php foreach ($posts as $post) : ?> <li><?= h($post['message']); ?></li> <?php endforeach; ?> </ul>
<?php else : ?>
<div id="login"> <a href="login.php" class="btn">Facebook Login</a> </div>
<?php endif; ?> <?php if ($twitterLogin->isLoggedIn()) : ?>
<form action="logout2.php" method="post" id="logout"> <input type="submit" value="Log Out"> <input type="hidden" name="token" value="<?= h($_SESSION['token']); ?>"> </form> <h1>@<?= h($me->tw_screen_name); ?>'s Timeline</h1> <ul> <?php foreach ($tweets as $tweet) : ?> <li><?= $tweet->text; ?></li> <?php endforeach; ?> </ul>
<?php else : ?>
<h1>My Timeline</h1> <div id="login"> <a href="login2.php"><img src="signin_button.png"></a> </div>
<?php endif; ?> </div> </body> </html>

こうなっています。

よろしくお願い致します。

miyabi-sun👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

izkn

2016/01/17 00:09

こちらの質問が他のユーザから「質問の範囲が広すぎる」という評価を受けています わからない点を明確にし、調査したこと・試したことと共に記入していただくと、回答が得られやすくなります。
guest

回答1

0

ベストアンサー

それはcomposerは関係ないでしょう。

No such class: FacebookLoginと帰(返)ってきます。

FacebookLoginというクラスが存在しないと言っていますが、

ドットインストールを見ると、

#07 FacebookLoginクラスを作っていこう

というビデオがあります。

これを実行していないのではないですか?(プレミアム会員でないと内容が見られないので確認していませんが…)

投稿2016/01/17 00:15

編集2016/01/17 00:16
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2016/01/17 00:19

あ…ちがうな、そういうことか… 多分僕が間違いです。無視して下さい。 ちょっとビデオを見ないとはっきりしたこと言えないですが…
退会済みユーザー

退会済みユーザー

2016/01/17 00:31 編集

あんまり関係ないかもしれませんが、ちょっと気になったので。 お恥ずかしながら、僕もあんまりcomposerの使い方よくわかってないんですが(というか、あんまり好きじゃないです) { "require" : { "facebook/php-sdk-v4" : "~5.0", "abraham/twitteroauth": "^0.6.2" }, "autoload": { "psr-4": { "MyApp\\": "lib/" } } } こうかな。 で、 composer install すると、FacebookLoginクラスが入っていくれたりしたらいいなあと思ったりもしますが、Facebookの仕様が変わっていて、既にFacebookLoginクラスは存在しなくなっている、みたいなことも、ドットインストールには結構あったりするのでなんとも… とにかく、ビデオ見られないので検証のしようもありません。
KosukeYamamoto

2016/01/17 00:33

FacebookLoginクラスは自分たちで作りました。
KosukeYamamoto

2016/01/17 00:34

Fatal error: Class 'Facebook\Facebook' not found in /home/vagrant/lib/FacebookLogin.php on line 9 こんなことになってしまいます。 <?php namespace MyApp; class FacebookLogin { private $_fb; public function __construct() { $this->_fb = new \Facebook\Facebook([ 'app_id' => APP_ID, 'app_secret' => APP_SECRET, 'default_graph_version' => APP_VERSION, ]); } public function isLoggedIn() { return isset($_SESSION['me']) && !empty($_SESSION['me']); } public function login() { if ($this->isLoggedIn()) { goHome(); } $helper = $this->_fb->getRedirectLoginHelper(); // get access token try { $accessToken = $helper->getAccessToken(); } catch (\Facebook\Exception\FacebookResponseException $e) { echo 'Response Error: ' . $e->getMessage(); exit; } catch (\Facebook\Exception\FacebookSDKException $e) { echo 'SDK Error: ' . $e->getMessage(); exit; } if (isset($accessToken)) { // save user // var_dump($accessToken); if (!$accessToken->isLongLived()) { try { $accessToken = $this->_fb->getOAuth2Client()->getLongLivedAccessToken($accessToken); } catch (\Facebook\Exception\FacebookSDKException $e) { echo 'LongLived Access Token Error: ' . $e->getMessage(); exit; } } // var_dump($accessToken->isLongLived()); // exit; $this->_save($accessToken); goHome(); } elseif ($helper->getError()) { goHome(); } else { $permissions = ['email', 'public_profile', 'user_posts']; $loginUrl = $helper->getLoginUrl(CALLBACK_URL, $permissions); header('Location: ' . $loginUrl); } exit; } private function _save($accessToken) { // get user info $fb = new Facebook($accessToken); $userNode = $fb->getUserNode(); // var_dump($userNode); exit; // save user $user = new User(); $me = $user->save($accessToken, $userNode); // var_dump($me); // exit; // login session_regenerate_id(true); // session hijack $_SESSION['me'] = $me; } } どうしてでしょうか?
退会済みユーザー

退会済みユーザー

2016/01/17 00:39

全体のディレクトリ構造とファイル構造みれば一発なんでしょうが、それは無理そうなので… いままでの情報をみると、autoload使っているのだと思うのですが、autoloadしてるパス内に、目的のファイルが無いのではなかと思います。
退会済みユーザー

退会済みユーザー

2016/01/17 00:41

か、ネームスペースの問題か。 不勉強で、ネームスペースの仕様もよく把握してません。すみません。
KosukeYamamoto

2016/01/17 00:58

autolodeは { "require" : { "facebook/php-sdk-v4" : "~5.0" }, "autoload": { "psr-4": { "MyApp\\": "lib/" } } } { "require": { "abraham/twitteroauth": "^0.6.2" } } このようにパスしています。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問