2012-03-06 35 views
0

我最近在老用戶遇到問題。這是一個很難測試的場景。當我嘗試強制他們使用增強型身份驗證對話框將應用程序添加到他們的時間線時,舊用戶會收到錯誤。我應該說,一切正常的新用戶。將較早的Auth用戶轉換爲增強的Auth用戶

舊用戶的身份驗證很好,但如果您嘗試時間軸操作,他們會得到一個#200錯誤,指出需要publish_actions。這是預期的。所以我試圖通過1)解決這個問題。)檢查用戶的join_date到我的應用程序。如果那個日期是在我做了增強開關之前,那麼2.)我檢查他們的權限。

如果他們沒有publish_actions,像這樣,我這樣做:

if(!array_key_exists('publish_actions', $permissions['data'][0])) { 
$gotoURL = APP_URL."?page=home"; 
$cancelURL = APP_URL."?page=terms&cancel=1"; 
$url = $facebook->getLoginUrl(array('canvas' => 1, 'fbconnect' => 0, 
            'scope' => 'publish_actions', 
            'redirect_uri' => $gotoURL, 
            'cancel_url' => $cancelURL)); 
echo "<html><body><script>window.parent.location='".$url."';</script></body></html>"; 
exit; 
} 

出於某種原因,似乎把它們放在一個重定向循環。我有最新的PHP SDK,所以我不知道這個問題是什麼,就像我說的那樣,很難測試。有什麼想法可以解決問題/解決方案?有一個更好的方法嗎?

回答

0

他們進入重定向循環,因爲這樣表達:

if(!array_key_exists('publish_actions', $permissions['data'][0]))

總是爲真正。如果你弄清楚如何正確檢查權限,它應該可以工作。

這就是說,在我的應用程序中,我從不允許重定向循環發生。如果用戶沒有授予權限,她將被重定向到一個頁面,解釋我們爲什麼要求這樣的權限(使用按鈕返回授予權限)。如果她已經決定不希望授予應用權限,那麼只是將她重定向到同一事物並沒有什麼意義。