0

我正在开发一个网站,并使用 PHP SDK 3 连接 facebook。

问题是在用户进行身份验证并授予权限后,facebook返回结果的页面。对我来说,用户单击“允许”后,它会进行身份验证,然后使用查询字符串返回同一页面(索引)。

我想要的是,如果用户单击“不允许”,他将被重定向到某个页面,例如 login-fail.php,如果他授予权限,他将被重定向到他的数据所在的 login-success.php处理并存储在数据库中。

有任何想法吗?

4

2 回答 2

1

如果出现错误,您不能指定重定向 URL。您可以做的最好的事情是设置一个与成功或错误相同的重定向 URL:

$args['redirect_uri'] = "http://www.yoursite.com/after-dialog.php"
$url = $facebook->getLoginUrl($args);

如果用户点击“不允许”,他将被重定向到after-dialog.php具有以下 GET 参数的页面:

error = access_denied
error_reason = user_denied
error_description = The+user+denied+your+request.

如果您真的想根据他的登录成功重定向他,您可以after-dialog.php通过以下方式在文件顶部跟踪它:

if (isset($_GET['error'])) {
  header('Location: http://www.yoursite.com/login-failed.php");
} else {
  header('Location: http://www.yoursite.com/login-success.php");
}

希望有帮助!


编辑:正如您所指出的(在此答案的评论中)SDK 代码中的评论说:

redirect_uri: the url to go to after a successful login

但是API的参考说:

如果用户按下不允许,则您的应用未获得授权。OAuth 对话框将(通过 HTTP 302)将用户的浏览器重定向到您在redirect_uri参数中传递的 URL。

和 :

如果用户按Allow,则您的应用程序已获得授权。OAuth 对话框将(通过 HTTP 302)将用户的浏览器重定向到您在redirect_uri参数中传递的 URL。

我还进行了一些测试,用户总是被重定向到redirect_uri,即使他点击“不允许”。它必须是代码注释中的拼写错误。

于 2011-05-27T23:45:35.657 回答
1

在我的例子中,我通过检查参数“error_reason”解决了这个问题,当用户点击不允许时,url 带有这个参数。您可以在此页面中看到它:

http://aplicacionesfacebookparadummies.blogspot.com/2011/09/obtener-datos-usuario-mediante-login.html

于 2011-09-21T09:53:19.090 回答