Facebook授权问题

时间:2009-01-27 18:14:06

标签: php facebook authorization

我正在开发一个Facebook应用程序,而且我只是不了解他们的授权系统如何运作。

我们的基本设置是

canvas URL = domain.com/facebook

这是一个带有FBML Iframe元素的简单页面,它指向domain.com/facebook/app,这是一个提供Flash应用程序的HTML页面。

Flash应用程序从我们的应用程序服务器请求其他数据 - 其中一些请求要求提供Facebook数据(例如朋友ID列表)。

然后,Flash向domain.com/resources/facebook/friends发出请求 - 这是一个PHP页面,它创建一个Facebook实例(他们的PHP库)并执行必要的API调用并返回数据。

但是,对此URL的请求(通过Flash)不会验证,因此它会重定向到他们的登录名,然后他自己使用两个参数重定向我的画布URL - auth_token 下一步。因此请求有效,但重定向会中断Flash调用。

所以,我正在试图弄清楚如何使这些其他API调用(当他们自己的mace facebook API调用时)从一开始就被facebook-vaildated。

2 个答案:

答案 0 :(得分:1)

好的,我明白了。

事实证明,Flash已经遵循重定向 - 我需要做的就是在有授权请求时检测(在画布URL处)(由 auth_token 包含 auth_token作为GET参数。

所以,与我上面所说的相反,重定向并没有打破闪存调用 - 它只是没有足够的数据作为有效请求。

答案 1 :(得分:1)

通过下面的代码而不是“require_login()”行来解决问题

if (isset($_GET['auth_token'])) {
 $sess_data=$facebook->api_client->call_method('auth.getSession',array('auth_token'=>$_GET['auth_token']));
 $facebook->set_user($sess_data['uid'],$sess_data['session_key'],$sess_data['expires']);
 $user=$sess_data['uid'];
}
if (!$sess_data) {
 $user=$facebook->require_login();
}