2012-01-07 40 views
1

我正在用一些額外的代碼來調整我的應用程序,比如檢查用戶是否允許我們需要的權限(也許他在第一次訪問後已經改變了它)。檢查權限並重定向給出err_too_many_redirects?

$permissions_needed = array('publish_stream,read_stream'); 
foreach($permissions_needed as $perm) { 
    if(!isset($permissions_list['data'][0][$perm]) || $permissions_list['data'][0][$perm] != 1) { 
     $login_url_params = array(
     'scope' => 'publish_stream,read_stream', 
     'fbconnect' => 1, 
     'next' => 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'] 
     //redirect_uri => 'https://www.mydomain.com/fb_app/' 
    ); 
     $login_url = $facebook->getLoginUrl($login_url_params); 
     header("Location: {$login_url}"); 
     exit(); 
    } 

我該如何解決這個問題?何時使用下一個vs redirect_uri作爲params?

回答

1

爲什麼不提示用戶只有在執行需要該權限的操作時才允許擴展權限(或任何權限)?
以下是SO Question的鏈接,詳細說明如何使用Facebook JS SDK請求權限。

如果您的使用刪除了某個權限,可能是因爲他/她不知道您的應用程序爲什麼需要該權限。通過僅在用戶執行該操作時才請求權限,並且可能包括對您要求此權限的原因的簡短說明,則用戶可能傾向於重新允許您的應用程序獲得辯論許可。

編輯 重新方向我通常使用一個JS重定向。就像這樣:

$url = $facebook->getLoginUrl(array(
     'req_perms' => implode(",",$requiredPermissions), 
     'fbconnect' => 1, 
     'redirect_uri' =>'YOUR_URL' 
    )); 
echo "<script language=javascript>"; 
echo "top.location.href = '".$url."';"; 
echo "</script>"; 
+0

你是對有關「應用程序的需求 - 即許可權」,但是這是我的測試代碼的一部分,我想知道如何提示權限框時if語句返回true。簡單迴應「給我們正確的許可」的作品。我使用與用戶第一次訪問相同的$ login_url_parms。 – alex 2012-01-07 14:39:05

+0

嘗試從while語句中刪除您的'$ facebook-> getLoginUrl','header'和'exit'調用。在這裏放置一個'$ has_all_perms'標誌,並在其中加入一個'break;'語句。然後檢查'wile loop'結束後。 – Lix 2012-01-07 14:45:00

+0

嗯,我將如何提示權限? 'if($ has_all_perms == 0){ $ login_url = $ facebook-> getLoginUrl($ login_url_params); header(「Location:{$ login_url}」); exit(); }'給出了相同的錯誤 – alex 2012-01-07 15:39:53