Omniauth分支0-3-稳定的git://github.com/intridea/omniauth.git Rails 3.0.7
当Omniauth通过对“/ auth / facebook”进行GET调用将用户重定向到Facebook身份验证对话框时,如果该用户从身份验证对话框中单击“取消”,那么我们可以进行回调请求
GET "/auth/facebook/callback?error_reason=user_denied&error=access_denied&error_description=The+user+denied+your+request."
Omniauth立即出现重定向到:
GET "/auth/failure?message=invalid_credentials"
不幸的是,这是对应用的回应。 FB请求对话框生成的邀请,没有关于哪个用户在auth对话框中“已取消”的识别信息。如果我们可以通过Omniauth请求发送一些识别信息,我们可以让自己“记住”哪个用户执行了“取消”,这将有助于我们跟踪后端的明确拒绝。
有没有办法通过调用“/ auth / facebook”发送数据,这些数据只会在调用“/ auth / facebook / callback”时重复回复给我们?这与请求对话框文档中的“data”参数类似。
谢谢, 韦斯
答案 0 :(得分:4)
您可以传递一个“状态”参数,该参数将传递给回调网址。
例如。你打电话给'/ auth / facebook?state = SOME_INFO'
然后在您将'/ auth / facebook / callback'路由到的控制器操作中,您将检索正常的参数:
info = params [:state]
该参数必须命名为“州”。这在omniauth-facebook文档的“Per-Request Options”部分中提到。 https://github.com/mkdynamic/omniauth-facebook