ここで概説されている手順に従って、Facebook アプリのログインを作成しました: http://developers.facebook.com/docs/howtos/login/server-side-login/
そして、ステップ 3 にいます。これを開発用に localhost にセットアップしてから、別のアプリ ID を使用して Azure Web サイトに発行します。ただし、これを最初にローカルホストで機能させたいと思います。(ローカルホスト以外のドメインではまだ試していません。)
Facebook アプリの構成ページで、いくつかの関連フィールドを設定しました。 サイト URL: http:// localhost : 8052/ (スタック オーバーフローへの送信を許可するためにスペースが追加されました)
Facebook コード セットがない場合、main.php はログイン ページにリダイレクトします。これはうまくいきます。
<head>
<?php
if(!isset($_SESSION['code'])) {
echo ('<meta http-equiv="REFRESH" content="0;url=/login.php" />');
}
?>
</head>
login.php は、例からコピーしたコードを使用して Facebook のログイン ページにリダイレクトします。
<?php
include '/lib/url.php';
$app_id = "XXXXX";
$app_secret = "XXXXX";
$my_url = CreateUrlForPage('welcome.php');
session_start();
$code = '';
if(!isset($_REQUEST["code"])) {
$_SESSION['state'] = md5(uniqid(rand(), TRUE)); // CSRF protection
$dialog_url = "https://www.facebook.com/dialog/oauth?client_id="
. $app_id . "&redirect_uri=" . urlencode($my_url) . "&state="
. $_SESSION['state'];
echo $my_url.'<br/>';
echo $dialog_url.'<br/>';
echo("<script> top.location.href='" . $dialog_url . "'</script>");
}
?>
明らかに、上記のアプリ ID は難読化されています。
「CreateUrlForPage」関数によって生成された URL は、Facebook のログイン URL と同様に問題ないように見えます。
http://localhost:8052/welcome.php
https://www.facebook.com/dialog/oauth?client_id=XXXX&redirect_uri=http%3A%2F%2Flocalhost%3A8052%2Fwelcome.php&state=XXXX
(ここでも難読化が行われています。実際の値は問題ないように見えました。最初の値は整数で、2 番目は長い 16 進文字列です。)
http:// localhost : 8052/login.php に移動すると、ページが Facebook にリダイレクトされ、まったく役に立たないエラーが表示されます。「エラーが発生しました。後でもう一度やり直してください。」
Stack Overflow で他のいくつかの投稿を見ましたが、問題は解決しませんでした。
私が得ているエラーは、ここで説明されているものとまったく同じように見えます: Facebook application login error on localhost 提示された提案は、ドメインとサイト URL を設定することです。
この質問へのリンクもあります: Running Facebook application on localhost 繰り返しますが、サイト URL が提案されています。彼らはまた、私が使用しているものではない app-canvas についても話していますが、それがログインにどのように関連するのかわかりません。
サイト URL とドメインを設定する前に、サイト URL を設定する必要があるという別のエラーが表示されました。