2013-05-07 51 views
0

我有一個非常困難的時期與Facebook標籤/應用程序,我試圖用非常具體的需求來創造:單頁「門控」 Facebook標籤/應用程序與權限

  1. 它必須是包含在一個文件 - 的index.php(像的.js,的CSS,並且作爲包含其他PHP文件的輔助文件是細)。
  2. 它必須有一個在中選擇「拒絕」的權限調用初始頁面(即:單擊「轉到」按鈕)
  3. 必須在PHP SDK

做現在,我已經之前使用過Javascript SDK,它的'相當簡單。我試圖用PHP來做這件事,並且在我的系統中扔了一些扳手。

這是我的基本設置:

在index.php,我包括在處理整個Facebook的SDK包含文件的頂部和global.php:

$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_ID}}} & app_data文件= flash_load)。我也有這個相同的URL設置爲與Facebook登錄網站URL的網站@https://developers.facebook.com/apps/ {{{APP_ID}}}

所有這一切工作正常,並順利與此流程的明確例外:

如果用戶沒有權限:

    他們訪問的標籤
  1. 它們是由閃屏
  2. 他們單擊「轉到」這促使重新定向到http://www.facebook.com/ {{{PAGE_NAME}}}伏
  3. = app _ {{{APP_ID}}} & app_data文件= flash_load
  4. 頁(的index.php)重新加載具有簽名的請求app_data文件= flash_load
  5. 權限授予
  6. 的index.php重新加載到初始頁面。

如何讓這個爲初始重裝授予其權限的flash文件被加載,而不是飛濺?

我曾嘗試加入stateredirect_uri但一直未能使用$_GET搶值,$_REQUEST,或$facebook->getSignedRequest();

我也試圖用$_SERVER搶URL,並解析出,但並不涉及Facebook的網址。

側面說明:授予權限後的第一個重裝後,以後每負載應該加載飛濺正常。

回答

0

當您詢問權限時,您可以使用user_idoauth_token的存在來確定用戶已授權您的應用程序,並且您可以加載閃存文件而不是閃屏。

關於signed_request領域的文檔描述爲

一些字段和值,如果用戶有logged into您的應用程序例如USER_ID和組oauth_token將只通過了相同的。

相關問題