0

RailsアプリケーションでTwitterアカウントを認証するためにOmniauthを使用しています。

以前は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(そうすることで、承認のみにダイレクトメッセージにアクセスするための権限が含まれます)

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'}'は正常に機能します。

この問題の解決策はありますか?

4

1 に答える 1

0

これに対する答えが見つかりました。

authorize_pathが"/oauth/authorize"に設定されている場合、uid フィールドは nullです。代わりに、以下を使用して Twitter ユーザー ID を取得できます。

auth['extra']['raw_info']['id']
于 2012-08-27T13:56:39.583 に答える