我正在使用PHP SDK的getLoginUrl()函數,該函數完美地將用戶登錄進來。一旦用戶重定向回到我的頁面,URL可以有兩種形式,請參閱以下鏈接小節3:http://developers.facebook.com/docs/authentication/server-side/Facebook PHP SDK - getLoginUrl() - 狀態值
返回URL的一部分是?state = value。這個值應該是用來防止跨站請求僞造:http://developers.facebook.com/docs/reference/dialogs/oauth/
雖然使用getLoginUrl()方法,我永遠不能設定的狀態值,因爲它不是一個參數:http://developers.facebook.com/docs/reference/php/facebook-getLoginUrl/
那麼如何我可以利用狀態值將用戶登錄到Facebook並防止CSRF?
我一直想知道這一點。我現在正在做的事情是這樣的:(我相信這是更好的更正確的方式)'$ loginUrl = $ facebook-> getLoginUrl(array('scope'=>'email','redirect_uri'=> FACEBOOK_REDIRECT_URL )); $ _SESSION ['state'] = $ _SESSION ['fb _'。FACEBOOK_APP_ID。'_ state'];'。然後,當重定向到您的網站後進行身份驗證時:'if($ _ SESSION ['state'] == $ _REQUEST ['state']){// not CSRF}' – uguMark 2012-05-09 10:07:20