我目前正在使用rails和omniauth gem将我的应用程序与facebook, twitter和linkedin集成。当我处理一个全功能回调时,我只是从身份验证散列中保存uid和提供者。大多数在线教程只保存这些字段,但你如何能够访问用户的详细信息,从facebook/twitter/linkedin以后?除了uid/provider之外,身份验证哈希中还应该保存哪些字段?
我读过的一些指南:
Github omniauth with design
Railscast omniauth and design
在Railscast中,在创建全功能OmniauthCallbacksController之前有一个示例,其中行:
raise request.env["omniauth.auth"].to_yaml
在屏幕上输出请求。正如您所看到的,在这个散列omniauth.auth
中,有很多关于经过身份验证的用户的有用信息。每次身份验证是OK时都会接收到它。在这种情况下,除了uid
和provider
之外,不需要在数据库中存储任何其他内容。
哈希表项可以这样访问:
(request.env["omniauth.auth"]).info.nickname
或
(request.env["omniauth.auth"]).uid
您可以看到逻辑:yaml输出的每个部分(比如' info')都包含特定的属性。
最终从facebook保存访问令牌,如果我需要信息,则轮询api,然后每2小时自动刷新令牌。