我正在使用Facebook 登录对话框登录我的网站(使用PHP SDK),但它总是在新用户第一次授权应用程序时失败,而在他们第二次尝试时成功。
我发现state
在用户授权我的应用程序后,该参数没有在重定向 url 中传回给我,这导致我的应用程序中的 CSRF 检查失败(在getCode()
SDK 中)。对于它的价值,该code
参数包括在内。
但是,如果他们第二次点击对话链接,它会按预期工作 - 不需要进一步的授权点击,并且重定向 url 是正确的,同时带有state
和code
参数。
所以我的问题是:
state
授权后如何找出导致重定向丢失的原因?
作为参考,我的对话链接如下所示:
https://www.facebook.com/dialog/oauth?client_id=MY_CLIENT_ID&redirect_uri=http%3A%2F%2Fwww.mysite.com%2Fconnect&state=4f246904818d682a742c59cbbced829c&scope=email%2Cuser_likes