【问题标题】:One-Page "Gated" Facebook Tab/App with Permissions具有权限的一页“门控”Facebook 选项卡/应用程序
【发布时间】:2013-05-01 22:49:45
【问题描述】:

我在尝试创建具有非常特殊需求的 Facebook 标签/应用时遇到了困难:

  1. 它必须包含在一个文件中 - index.php(辅助文件,如 .js、.css 和其他包含的 .php 文件都可以)。
  2. 它必须有一个启动页面,该页面在“选择”时要求权限(即:单击“开始”按钮)
  3. 必须在 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

除了此流程的明确例外,所有这些都运行良好:

如果用户没有权限:

  1. 他们访问标签
  2. 它们由初始屏幕提示
  3. 他们点击“Go”,重定向到http://www.facebook.com/{{{PAGE_NAME}}}?v=app_{{{APP_ID}}}&app_data=flash_load
  4. 页面 (index.php) 使用签名请求重新加载 app_data = flash_load
  5. 已授予权限
  6. index.php 重新加载到 SPLASH 页面。

我该如何做到这一点,以便 INITIAL 重新加载 AFTER 授予权限时加载 Flash 文件而不是启动画面?

我尝试将state 添加到redirect_uri,但无法使用$_GET$_REQUEST$facebook->getSignedRequest(); 获取值

我也尝试使用$_SERVER 来获取 URL 并将其解析出来,但这并不是指 Facebook URL。

旁注:授予权限后第一次重新加载后的每个后续加载都应正常加载启动画面。

【问题讨论】:

    标签: php facebook permissions facebook-php-sdk


    【解决方案1】:

    当您请求权限时,您可以使用user_idoauth_token 的存在来确定用户已经授权您的应用,并且您可以加载flash 文件而不是启动屏幕。

    关于signed_request字段的文档描述与

    某些字段和值,例如 user_id 和 oauth_token 只有在用户拥有logged into您的应用时才会被传递。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-08
      • 1970-01-01
      • 2012-01-25
      • 2015-05-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多