我正在使用Omni-auth对rails应用程序中的twitter帐户进行身份验证。
我以前可以得到uid参数,但现在它返回null,就像下面的一样
{"provider":"twitter","uid":null,
"info":
{
"nickname":"boobalanv",
"name":"Boobalan",
"location":"",
"image":"<image url>",
"description":"",
"urls":
{
"Website":null,
"Twitter":"http://twitter.com/boobalanv"}},
"credentials":
我正在本地主机上测试这个。
我做错了什么,还是推特已经停止提供用户id?
更新:
实际上,我在initializers/omniauth.rb
中添加了授权路径的客户端选项,如下所示(通过这样做,只有授权将包括访问直接消息的权限)
provider :twitter, Rails.application.config.consumer_key , Rails.application.config.consumer_secret , authorize_params: {force_login: 'true'}, client_options: {authorize_path: '/oauth/authorize'}
只有在这样做之后,我才会遇到uid=null的问题,当我删除此选项"client_options:{authorize_path:"/oauth/authorize"}"时,它可以正常工作。。
这个问题有什么解决办法吗?
找到了答案。
当authorize_path设置为"/oauth/authorize"时,uid字段为null。相反,我们可以使用下面的获取Twitter用户id
auth['extra']['raw_info']['id']