我正在开发一个网站,我使用PHP SDK 3进行了facebook连接。
问题是在用户进行身份验证并授予权限后,facebook返回结果的页面。对于我,在用户单击“允许”后,它会进行身份验证,然后使用查询字符串返回到同一页面(索引)。
我想要的是,如果用户点击“不允许”,他将被重定向到某个页面,如login-fail.php,如果他授予权限,他将被重定向到login-success.php,在那里他的数据将被处理并存储在数据库中。
任何想法?
答案 0 :(得分:1)
如果出现错误,您无法指定重定向网址。您可以做的最好的事情是设置一个重定向URL,该URL对于成功或错误是相同的:
$args['redirect_uri'] = "http://www.yoursite.com/after-dialog.php"
$url = $facebook->getLoginUrl($args);
如果用户点击“不允许”,他将被重定向到具有以下GET参数的页面after-dialog.php
:
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
如果用户按不允许,则您的应用未获得授权。 OAuth对话框将(通过HTTP 302)用户的浏览器重定向到您在 redirect_uri 参数中传递的URL。
和:
如果用户按允许,则您的应用已获得授权。 OAuth对话框将(通过HTTP 302)用户的浏览器重定向到您在 redirect_uri 参数中传递的URL。
我还运行了一些测试,用户总是重定向到redirect_uri
,即使他点击“不允许”。它必须是代码注释中的拼写错误。
答案 1 :(得分:1)
在我的情况下,我通过检查参数“error_reason”解决了这个问题,当用户单击“不允许”时,url会携带此参数。您可以在此页面中看到它: