Facebook身份验证对话框 - 将数据传递给redirect_uri

时间:2012-06-26 14:38:43

标签: facebook parameter-passing facebook-authentication

我遇到了在需要访问facebook的页面之间传递数据的问题。

这是一个简单的例子:
 第1页 - 有数据({str:" 123"})(但仍然没有获得Facebook访问权限)
 然后它重定向到facebook_authentication,重定向到redirect_uri(第2页)
 第2页 - 需要从第一页获取数据,但它被facebook auth对话框中断。(第2页需要facebook访问权限才能提交str数据)。

有什么方法可以将数据从第一页通过auth对话框传递到第2页? 像这样:auth_url..parameters ..?str = 123 然后我会在第2页中得到它,就像这样$ _GET [' str'];

2 个答案:

答案 0 :(得分:1)

我们在oAuth流程实施过程中遇到的同样问题,两个可能的解决方案是

  1. 将您的数据保存在第1页的Cookie中,并阅读第2页中的Cookie。
  2. 其他解决方案是将数据放入会话中。

  3. 如果是用户特定数据,我建议使用1。

答案 1 :(得分:1)

我写了一个在facebook上运行的应用程序,并且还必须处理这个问题。我用过这样的东西

$sAppId = '12345567999455';

$sFBUrl = 'http://www.facebook.com/pages/<name>/<id>?sk=app_<app_id>&app_data=key:val;key:val';

$sDialogUrl = 'https://www.facebook.com/dialog/oauth?client_id=' . $sAppId . '&redirect_uri=' . urlencode($sFBUrl)

echo "<script>top.location.href='" . $sDialogUrl . "'</script>";   

然后解析数据

$aAppData = explode(';', $aSignedRequest['app_data']);

这为我们提供了一个案例解决方案

https://www.facebook.com/dialog/oauth?client_id=app_id&redirect_uri=your_url?str=123

在我的上一个应用程序中,我使用了我在此解释的技巧:SSO Website-Network with Facebook Login

此致