我正在开发一个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。
答案 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();
}