2014-05-01 61 views
1

我正在開發一個可讓用戶使用Facebook登錄的Web應用程序。
的流程是:
1.點擊登錄與FB
2.登錄FB
3.重定向回Web應用程序從Facebook註銷時遇到的問題

出於安全的原因(應用程序將要在iPad上運行在客戶商店中)我需要在從FB接收到響應後立即從Facebook註銷用戶 - 該應用不再與FB API交互)。

用戶登錄到FB之後,將出現一個批准對話框,它可以讓用戶
1.到應用授予訪問權限
2.拒絕訪問該應用

然後,用戶被重定向到該應用,其中響應被處理。

public function facebook() 
{ 
    try { 
     $fbUser = Faceoff::me(); 
     $user = UserCreator::withProfile($fbUser); 
     Auth::login($user); 

     $url = Faceoff::getLogoutUrl(['next' => 'url to protected area']); 
    } catch (\Exception $e) { 
     $url = Faceoff::getLogoutUrl(['next' => 'url to login page']); 
    } 

    Faceoff::destroySession(); 
    return Redirect::to($url); 
} 

如果用戶授予訪問執行try塊中,如果用戶拒絕訪問,轉而執行catch塊和註銷URL與適當next參數被生成。
用戶將被重定向到該註銷URL。 目前爲止這麼好。

問題是:如果用戶沒有授予對應用程序的訪問權限,我無法從FB註銷用戶。
但我可以,如果訪問被授予。

有沒有解決方案,或這是打算的行爲?

PS-1:Faceoff只是Laravel的包裝。
PS-2:對於這樣的故事,我只是需要你知道我想要達到的目標以及問題的起點。

謝謝任何​​可能導致解決方案!

+1

當然這是有意的行爲,否則我訪問過的任何網站都可能使我退出FB,無論我是否希望這樣做 - 因此它需要一個活動的用戶訪問令牌。 – CBroe

+0

順便說一句,讓大量用戶以頻繁的方式登錄非常有限的設備是不明智的 - 這很有可能觸發Facebook的安全算法,這會讓人覺得有些黑幕正在發生......並且可能會導致您的用戶不得不回答額外的安全問題,在自己的帳戶中遇到其他麻煩,直到您的應用被阻止。 – CBroe

+0

是的,我從這一點看,這是正確的行爲。 如果你把你的評論變成答案,我可以標記它!謝謝。 順便說一句,完全放棄iPad的想法。 – Andreyco

回答

1

問題是:如果用戶沒有授予對應用程序的訪問權限,我無法從FB註銷用戶。 但我可以,如果訪問被授予。

有沒有解決方案,或這是打算的行爲?

當然,這是預期的行爲,否則網站我訪問可以登錄我出去FB的,我是希望這樣的事情發生或不 - 而爲此它需要一個活躍的用戶訪問令牌。 。


而且順便說一句,這不是明智的,有大量用戶的登錄上一組非常有限的頻繁時尚的設備 - 這是非常有可能引發Facebook的安全算法,會覺得有什麼黑幕正在發生......並可能導致用戶不得不回答額外的安全問題,在其他問題上遇到自己的帳戶,直到您的應用被阻止。