使用Omniauth(Rails)时,Twitter uid为null



我正在使用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']

最新更新