我在尝试创建具有非常特殊需求的 Facebook 选项卡/应用程序时遇到了非常困难的情况:
- 它必须包含在一个文件中——index.php(辅助文件,如 .js、.css 和其他包含的 .php 文件都可以)。
- 它必须有一个启动页面,在“选择”时要求权限(即:单击“开始”按钮)
- 必须在 PHP SDK 中完成
现在,我之前已经为此使用过 Javascript SDK,而且它非常简单。我正在尝试在 PHP 中执行此操作,并在我的系统中抛出一些扳手。
这是我的基本设置:
在 index.php 中,我在文件顶部包含了一个 global.php,它处理整个 facebook SDK 包括:
$facebook = new Facebook(array(
'appId' => APP_ID,
'secret' => APP_SECRET,
));
$signed_request = $facebook->getSignedRequest();
signed_request['app_data']
然后,我根据已签名的请求 ( ) “门控”正在加载的内容。如果签名请求“app_data”设置为“flash_load”,则检查权限。如果权限通过,则加载 Flash 文件,否则请求权限。如果 app_data != 'flash_load' 则加载启动页面。
一般页面流程:
Page load
If( app_data == flash_load )
check permissions
if permissions
render flash
else
request permissions
else
render splash page
启动页面有一个按钮,上面写着“开始”,它直接链接到页面选项卡(即: http: //www.facebook.com/ {{{PAGE_NAME}}}?v=app_{{{APP_ID}}}&app_data =flash_load)。我也设置了与 Facebook 登录站点 URL @ https://developers.facebook.com/apps/ {{{APP_ID}}}的网站相同的 URL
除了此流程的明确例外,所有这些都运行良好且运行良好:
如果用户没有权限:
- 他们访问标签
- 他们由启动画面提示
- 他们点击“Go”,重定向到http://www.facebook.com/ {{{PAGE_NAME}}}?v=app_{{{APP_ID}}}&app_data=flash_load
- 页面 (index.php) 使用签名请求重新加载 app_data = flash_load
- 已授予权限
- index.php 重新加载到 SPLASH 页面。
我该如何做到这一点,以便在授予权限后进行初始重新加载时加载Flash 文件而不是启动画面?
我尝试添加state
,redirect_uri
但无法使用$_GET
,$_REQUEST
或$facebook->getSignedRequest();
我也尝试使用$_SERVER
抓取 URL 并将其解析出来,但这并不是指 Facebook URL。
旁注:授予权限后第一次重新加载后的每个后续加载都应正常加载启动画面。