具有权限的单页“门控”Facebook标签/应用程序

时间:2013-05-07 20:47:08

标签: php facebook permissions facebook-php-sdk

我正在努力创建一个Facebook标签/应用程序,我正在努力创建具有非常特殊需求的文章:

  1. 它必须包含在一个文件中 - index.php(辅助文件,如.js,.css和其他.php文件,因为包含正常)。
  2. 必须有一个启动页面,在“选择”时调用权限(例如:点击“转到”按钮)
  3. 必须在PHP SDK中完成
  4. 现在,我之前使用过Javascript SDK,它非常简单。我试图在PHP中执行此操作,并在我的系统中抛出一些扳手。

    这是我的基本设置:

    在index.php中,我在文件顶部包含一个global.php,它处理整个facebook SDK include并且:

    $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
    

    启动页面有一个“Go”按钮,它直接链接到页面标签(即:http://www.facebook.com/ {{{PAGE_NAME}}}?v = app _ {{{APP_ID}}}& app_data = flash_load)。我也有与Facebook登录站点网址@ https://developers.facebook.com/apps/ {{{APP_ID}}}

    相同的网址设置

    所有这一切都运行良好,并且明确例外:

    如果用户没有权限:

    1. 他们访问标签
    2. 它们由启动画面提示
    3. 他们点击“开始”,重定向到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页面。
    7. 我该如何制作,以便 INITIAL 重新加载 AFTER 授予权限,加载Flash文件而不是启动?

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

      获取值

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

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

1 个答案:

答案 0 :(得分:0)

当您要求权限时,您可以使用user_idoauth_token来确定用户已经授权您的应用,并且您可以加载Flash文件而不是启动画面。

有关signed_request字段的文档描述与

相同
  

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