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

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

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

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

Facebook

Facebookは、実名登録制のSNS(ソーシャル・ネットワーキング・サービス)です。開発者用のデベロッパーサイトが存在し、一般ユーザーによるFacebook向けアプリケーション開発が可能です。

Q&A

解決済

1回答

1745閲覧

phpでwebアプリケーションを作っているがぺージが移動しない

退会済みユーザー

退会済みユーザー

総合スコア0

PHP

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

Facebook

Facebookは、実名登録制のSNS(ソーシャル・ネットワーキング・サービス)です。開発者用のデベロッパーサイトが存在し、一般ユーザーによるFacebook向けアプリケーション開発が可能です。

0グッド

1クリップ

投稿2015/12/16 14:07

こんにちわ。
独自でプログラミングを学んでいるものです。
初歩的な質問だと思いますが、エラーが発生してしまい
中々作業が進みません。アドバイスお願い致します。

vagrantで構築したローカル開発環境で、あるwebアプリケーション内にfacebookログインを実装している最中です。
動作確認を行ったところ、index.phpは表示できるのですが
その後エラーが発生し、login.phpのページが開けません。
どうやら同じところをループしているらしいのですが
どこがループになっているかわかりません。
以下がフォルダの中身です。
config.php

<?php ini_set('display_errors', 1); require_once(__DIR__ . '/vendor/autoload.php'); define('APP_ID', '**********'); define('APP_SECRET', '*************'); define('APP_VERSION', 'v2.5'); define('DSN', 'mysql:host=localhost;dbname=dotinstall_fb_connect_php'); define('DB_USERNAME', 'dbuser'); define('DB_PASSWORD', '*******'); define('CALLBACK_URL', 'http://' . $_SERVER['HTTP_HOST'] . '/login.php'); session_start(); require_once(__DIR__ . '/functions.php'); **functions.php** <?php function h($s) { return htmlspecialchars($s, ENT_QUOTES, 'utf-8'); } **index.php** index.php <?php require_once(__DIR__ . '/config.php'); ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>Facebook Login</title> <style> #container { width: 500px; margin: 0 auto; } #login { text-align: center; margin: 70px auto; } .btn { background: #3b5998; color: #fff; width: 200px; padding: 5px; border-radius: 5px; text-decoration: none; display: inline-block; } .btn:hover { opacity: 0.8; } </style> </head> <body> <div id="container"> <div id="login"> <a href="login.php" class="btn">Facebook Login</a> </div> </div> </body> </html>

login.php

<?php require_once(__DIR__ . '/config.php'); $fbLogin = new MyApp\FacebookLogin(); try { $fbLogin->login(); } catch (Exception $e) { echo $e->getMessage(); exit; } **lib/FacebookLogin.php** <?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 login() { $helper = $this->_fb->getRedirectLoginHelper(); $loginUrl = $helper->getLoginUrl(CALLBACK_URL); header('Location: ' . $loginUrl); exit; } } 宜しくお願い致します。

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

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

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

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

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

guest

回答1

0

ベストアンサー

どこがループになっているかわかりません。

$loginUrl = $helper->getLoginUrl(CALLBACK_URL); header('Location: ' . $loginUrl); exit;

ここではないでしょうか?
原因は、恐らくログインに失敗していて、失敗時にlogin.phpに自動転送されているためと思われます。
※なお「Login with Facebook」を使った事が無いので正確なところは分かりませんが、コールバックURLの指定方法も間違っているように思われます。「redirect_uri」パラメータを指定しなくてもただURLを書けば認識されるのでしょうか?参考ページ
※また上記の理由でCALLBACK_URLは無視されていると思いますが、仮に今のコードで無視されていないとしても、login.phpはの指定は不適切だと思います。ログインに失敗したときに戻ってくるページなので現状のコードならindex.phpが適当でしょう。

起きている現象を想像するとこうです。

  1. index.phpで「Facebook Login」をクリック。login.phpへ移動
  2. login.phpでは即座にfacebookログイン処理ページへリダイレクト
  3. facebookログイン処理ページで即座にログイン処理開始
  4. facebookへのログインに恐らく失敗。即座にlogin.phpにリダイレクト >>2へ 以下無限ループ

投稿2015/12/16 15:02

hirohiro

総合スコア2068

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

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

退会済みユーザー

退会済みユーザー

2015/12/16 16:01

とてもご丁寧にありがとうございます。 index.phpをしていたら大丈夫でした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問