【发布时间】:2013-05-01 22:49:45
【问题描述】:
我在尝试创建具有非常特殊需求的 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 页面。
我该如何做到这一点,以便 INITIAL 重新加载 AFTER 授予权限时加载 Flash 文件而不是启动画面?
我尝试将state 添加到redirect_uri,但无法使用$_GET、$_REQUEST 或$facebook->getSignedRequest(); 获取值
我也尝试使用$_SERVER 来获取 URL 并将其解析出来,但这并不是指 Facebook URL。
旁注:授予权限后第一次重新加载后的每个后续加载都应正常加载启动画面。
【问题讨论】:
标签: php facebook permissions facebook-php-sdk