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

时间:2012-07-24 11:54:40

标签: ruby-on-rails twitter omniauth

我正在使用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":

我正在我当地的主持人那里测试。

我做错了或者Twitter已停止提供用户ID?

更新:

实际上我在initializers/omniauth.rb添加了授权路径的客户端选项,如下所示 (通过这样做,只有授权才会包括访问直接消息的prvilege)

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'}'它的工作正常...

针对此问题的任何解决方案?

1 个答案:

答案 0 :(得分:0)

找到答案。

authorize_path 设置为“/ oauth / authorize”时,uid字段为空。 相反,我们可以使用下面的

来获取Twitter用户ID
auth['extra']['raw_info']['id']