我auth_nonce
在服务器端身份验证流程中使用该参数。但是,我遇到了一个问题,有时 Facebook 不会auth_nonce
在最后一步返回参数,这当然会导致身份验证失败。
通常它工作得很好。这些情况是当用户最初登录到我的应用程序时,我请求 Facebook 重新验证他们 ( auth_type=reauthenticate
)。我从未见过这种失败。
当它确实失败时,总是在用户登录之后,并且他们的 auth_token 已经过期,我在页面加载之间默默地重新验证他们以获得新的 auth_token。
在后一种情况下,URL 重定向看起来像这样:
http://myapplication.url
(通知令牌已过期,因此将用户发送到...)https://www.facebook.com/dialog/oauth?client_id={APP_ID}&redirect_uri=http%3a%2f%2fmyapplication%2eurl%2ffacebook%2fafterlogin&scope=list,of,permissions&display=page&auth_nonce=Vr6EgapnMFIKrbMtVrdcZDTbioGe715pWDtMveA8z4xVNMR5IzGYoPN3rSxf
(Facebook 将他们重定向到...)https://www.facebook.com/dialog/permissions.request?app_id={APP_ID}&display=page&next=http%3A%2F%2Fmyapplication.url%2Ffacebook%2Fafterlogin&response_type=code&auth_nonce=Vr6EgapnMFIKrbMtVrdcZDTbioGe715pWDtMveA8z4xVNMR5IzGYoPN3rSxf&fbconnect=1&perms=list%2Cof%2Cpermissions
(最后,我们被重定向回......)http://myapplication.url/facebook/afterlogin?code={Big long code here}#_=_
在最后一次通话中,我得到了以下 URL:
https://graph.facebook.com/oauth/access_token?client_id={APP_ID}&redirect_uri={THE_PROPER_REDIRECT_URL}&client_secret={APP_SECRET}&code={Big long code here}
我得到的答复是这样的:
access_token={AUTH_TOKEN}&expires=5083
根据文档(以及我在正常身份验证期间的经验),auth_nonce
最终回复中应该有一个我可以验证的参数。
我在这里做错了吗?