2013-02-07 45 views
5

我有一個在我的餐廳的自助服務終端上運行的Facebook應用程序,它允許用戶簽入。這很好,如果他們登錄並接受所需的權限,那麼當他們完成時沒有絲毫問題就可以讓他們註銷。facebook oauth無法註銷不接受權限的用戶

但是,如果他們不接受權限,則無法將其註銷。我試過了我能想到的所有東西,以及在stackoverflow上找到的每一篇文章。

如果auth沒有來自用戶的許可,我該如何登錄客戶?

我已經使用錯誤報告向Facebook報告了這一情況,他們表示他們正在研究它。只希望這裏的一位天才有一個想法。

+0

我不知道如果我完全明白你在說什麼關於...你的意思是那個用戶當系統提示授權您的應用程序或擴展權限對話框時,按下取消按鈕? – Lix

+1

他們在提示授權時按下取消按鈕。 – jeremiah

+0

我和你有同樣的問題。你有沒有找到解決方案? – Jako

回答

1

您應該使用圖api中的權限連接來確定用戶是否已經提供了所需的某些燙髮。如果他們沒有,你可以使用相同的條件來呈現一個登錄按鈕或流量超出範圍添加。

示例來臨:包括當前php sdk和當前帶登錄按鈕html5的js sdk。

*在本例中,我使用manage_pages需要的權限。*

PHP SDK 3.2.2初始化。

require '../../src/facebook.php'; 
$facebook = new Facebook(array(
    'appId' => '1111111111111111', 
    'secret' => 'xxxxxxxxxxxxxxxx', 
    'cookie' => true, // enable optional cookie support 
    )); 
try { $user = $facebook->getUser(); } catch (FacebookApiException $e) { }; 

PHP代碼:

if ($user) { 
    try { 
    // Proceed knowing you have a logged in user who's authenticated. 
    $user_accounts = $facebook->api('/me/?fields=permissions'); 
    } catch (FacebookApiException $e) { 
    error_log($e); 
    $user = null; 
    } 
} 

PHP條件和HTML5登錄按鈕

 <div id="fb-root"></div> 
     <script>// current js sdk</script> 
<?php if($user && !$user_accounts[permissions][data][0][manage_pages]): ?> 
// we know we have a user but no perms so lets render button with out scope. 
    <div class="fb-login-button" data-autologoutlink="true" data-show-faces="false" data-width="200" data-max-rows="1" data-size="large"></div> 
<?php elseif($user && $user_accounts[permissions][data][0][manage_pages]): ?> 
// we know we have a user and they have given perms so render button with scope. 
    <div class="fb-login-button" data-autologoutlink="true" data-show-faces="false" data-width="200" data-max-rows="1" data-size="large" data-scope="manage_pages"></div> 
<?php elseif(!$user): ?> 
// we have no user, flow as new user... or provide 2 buttons lol. 
    <div class="fb-login-button" data-autologoutlink="true" data-show-faces="false" data-width="200" data-max-rows="1" data-size="large" data-scope="manage_pages"></div> 
<?php endif; ?> 
+0

不幸的是,這實際上並不適用於我的情況。我的問題是,我不能強迫他們註銷Facebook。當他們登錄時,他們會看到權限請求。如果他們點擊取消,就沒有辦法在沒有將他們發送到Facebook的情況下將其從Facebook註銷。 爲了防止顧客訪問其他網站(即阻止愚蠢的孩子拉起色情網站),需要儘可能嚴密地鎖定自助服務終端;我把網站的其他部分鎖定了。唯一的另一種選擇是爲firefox編寫一個插件來刪除使用dom的cancel元素。 – jeremiah

+0

我只是想更新以防萬一有人再次查看這個。 firefox插件是我不得不去的路線。 Facebook拒絕解決這個問題。 – jeremiah

相關問題