我正在構建一個使用php facebook庫的網站。在每一頁的開頭,我檢查用戶是否使用$ facebook-> getLoginStatusUrl($ params)函數登錄Facebook或不使用(或嘗試使用)。我遇到的問題是,檢查該功能的唯一方法是讓用戶根據自己的雕像重定向到一個頁面(將它們引導至由該功能返回的url)。我不能使用file_get_contents或cURL,因爲該函數返回的URL使用https。無論如何,我可以通過服務器端方法獲取該URL的內容嗎?或者是絕對唯一的方式來做到這一點與重定向?我更願意不要將此作爲客戶端操作(通過Javascript)。有任何想法嗎?獲取用戶Facebook登錄狀態,但不想重定向
回答
您可以使用facebook的getUser()函數來檢查用戶是否已登錄並向您的網站提供了許可。之後,你可以使用getLoginUrl()或getLogoutUrl()向用戶顯示右鍵:
$user = $facebook->getUser();
if (!$user)
{
$loginUrl = $facebook->getLoginUrl(array(
'redirect_uri' => REDIRECT_URL,
'scope' => APP_PERMS,
'display' => 'page'
));
//do something with $loginUrl, for example:
echo '<a href="'.$loginUrl.'">Login with facebook</a>';
}
else
{
//check that this user is still valid
$realUser = $facebook->api('me');
...
您可以瞭解更多關於此功能在Facebook的文檔:
我並不是很熟悉Facebook的PHP庫,所以無法分辨是否有更好的方法來做你正在嘗試做的事情,但file_get_contents和cURL都可以在HTTPS下正常工作,只需給予他們的完整URL(例如「https://google.com/」)
它通過爲該facebook功能提供一組返回的URL轉發(基於用戶的登錄狀態)的URL。所以我給了它一個www.mywebsite.com/status.php的位置,然後給了那個url = false或者status = true的url參數。所有這些都會在被命中時出現真實或錯誤的迴應,並且打算用cURL來使用它,這樣我就可以知道用戶是否已登錄。但是,這隻有在瀏覽器中的facebook功能訪問我的URL時纔有效。如果我用cURL去它,我會得到一個空白頁面 – labago
是無論如何,我可以通過服務器端方法獲取該URL的內容?
這不會幫助你,因爲它不是你的服務器,客戶端用於登錄到Facebook,但他的瀏覽器。
因此,檢查用戶是否登錄必須在他們的瀏覽器中進行 - 這就是瀏覽器重定向到Facebook的原因,因爲這是讀取在Facebook域中設置的Cookie的唯一方法。
我更不希望將其作爲客戶端操作(通過Javascript)。
由於重定向,它已經是一種客戶端操作。
如果用戶在瀏覽器中登錄Facebook,絕對沒有辦法讓您的服務器單獨弄清楚。
- 1. 無法從Facebook獲取登錄狀態
- 2. 如何獲取登錄用戶的Facebook更新狀態提要?
- 3. Facebook獲取用戶狀態
- 4. Facebook登錄未重定向
- 5. Facebook登錄及重定向
- 6. 登錄後重定向Facebook
- 7. Facebook登錄後重定向
- 8. Facebook登錄和重定向
- 9. Facebook登錄,重定向bucle
- 10. Android Facebook登錄重定向
- 11. 重定向登錄用戶
- 12. 重定向登錄用戶
- 13. 如何通過Facebook應用程序獲取Facebook用戶的登錄狀態?
- 14. Facebook fb登錄不重定向
- 15. Facebook用戶登錄後不重定向到回調URL
- 16. 重新定向後,Facebook登錄沒有得到Facebook用戶ID
- 17. yii2登錄頁面重定向循環取消狀態
- 18. Rails重定向取決於登錄狀態
- 19. Facebook登錄禁用自動重定向
- 20. 用Java登錄Facebook獲取用戶accessToken
- 21. Facebook登錄按鈕添加到我的應用程序,但不會重定向一旦用戶登錄
- 22. Facebook登錄連接狀態
- 23. Facebook的登錄狀態
- 24. 登錄用戶狀態
- 25. 是否可以使用Graph API獲取Facebook登錄狀態?
- 26. 用於Facebook的JavaScript SDK未獲取登錄狀態
- 27. symfony 2重定向如果用戶已登錄並且想要調用/登錄
- 28. 登錄URL不重定向,當用戶在Django登錄成功
- 29. cakephp用戶/登錄重定向到用戶/自動登錄
- 30. Android應用Facebook登錄記住用戶,但Google登錄不會
我試過這個,如果它對我有效,它會使用它。出於某種原因,即使我從Facebook註銷,$ facebook-> getUser()仍然會返回我的Facebook ID,使其無法測試我是否已登錄 – labago
這是事實,這是因爲Facebook庫首先檢查餅乾,如果有延遲,直到這個餅乾變老。它慢得多,但是你可以檢查用戶是否連接了一個需要訪問令牌的api調用:例如,你可以調用$ facebook-> api('/ me'),除此之外,還可以給你更多關於用戶的信息。 –
我已經更新了我的帖子,你可以在getUser返回一個id之後檢查真實的用戶,這樣頁面會更快地響應沒有登錄的用戶。 –