我正在使用SDK v.4,但类FacebookRedirectLoginHelper方法isValidRedirect出现问题。Facebook isValidRedirect总是返回false
的SDK的代码是
protected function isValidRedirect()
{
return $this->getCode() && isset($_GET['state'])
&& $_GET['state'] == $this->state;
}
虽然$_GET['state']
是在回调URL的参数和$this->state
由它产生的密码安全pseudrandom号码的功能random()
分配。
$ _GET ['state']和$ this-> state;永远不会回报真实!
应该检查$ _SESSION不是$ _GET
请问你能解释一下你的答案吗?如何避免以上情况发生?即$ _GET ['state']&$ this->状态不匹配。 – 2015-03-10 09:52:32
当facebook返回到我的网址时,它再次调用getLoginUrl()函数。 所以我的问题是,是否有条件像if($ _ SESSION ['FBRLH_state'] ==''),然后只调用函数getLoginUrl()? – 2015-03-10 12:01:39
'getLoginUrl()'函数不会进行API调用,因此它在代码中再次被调用应该没有关系。更好的做法是寻找'$ _GET ['code']',因为这将是Facebook在登录时返回的内容。看看我的例子:https://www.webniraj。com/2014/05/01/facebook-api-php-sdk-updated-to-v4-0-0/ – 2015-03-11 11:53:06