4

ここで概説されている手順に従って、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 を設定する必要があるという別のエラーが表示されました。

4

1 に答える 1

2

このコードは私のために働いた。Facebook アプリ ID を再確認し、サイトの URL が http:// localhost:8052/ に設定されていることを再確認してください。ログイン用のドメイン名を設定する必要はありません。

http://gamma.owlweb.com.ua/index.php/?route=account/register/fb

<?php

$app_id = "xxx";    $app_secret = "xxx"; 
$my_url ="http://localhost:3080/abc.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>");
} 
?>
于 2013-02-02T23:19:42.067 に答える