facebook连接api回调网址

时间:2011-05-27 21:43:12

标签: facebook connect facebook-php-sdk

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

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

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

任何想法?

2 个答案:

答案 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

但是reference of the API说:

  

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

和:

  

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

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

答案 1 :(得分:1)

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

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