我一直在按照此处列出的步骤创建Facebook App登录: http://developers.facebook.com/docs/howtos/login/server-side-login/
我在第3步。我正在localhost上进行开发,然后我将使用不同的App ID发布到Azure网站。我想首先在localhost上工作。 (我还没有尝试使用非localhost域。)
在我的Facebook App配置页面上,我设置了几个相关字段: 站点URL:http:// localhost:8052 /(添加空格以允许子集到Stack Overflow) 应用域名:localhost
如果没有设置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>");
}
?>
显然我已经混淆了上面的App ID。
我的“CreateUrlForPage”函数生成的网址与facebook登录网址一样正常:
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
(再次,这里有一些混淆。实际值看起来没问题。第一个是整数,第二个是长十六进制字符串。)
当我导航到http:// localhost:8052 / login.php时,页面会重定向到Facebook并发出完全无用的错误:“发生了错误。请稍后再试。”
我查看了Stack Overflow上的其他一些帖子,但是他们没有解决我的问题。
我得到的错误看起来就像这里描述的错误: Facebook application login error on localhost 提供的建议是设置域名和站点URL,我已经完成了。
此问题还有一个链接:Running Facebook application on localhost 他们再次建议使用网站网址。他们还谈论app-canvas,这不是我正在使用的东西,我不知道它与登录有什么关系。
为了它的价值,在我设置网站网址和域名之前,我收到了一个不同的错误 - 一个告诉我需要设置网站网址的错误。
答案 0 :(得分:2)
这段代码对我有用。仔细检查你的Facebook应用程序ID和我的网站网址设置为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>");
}
?>