質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

1回答

266閲覧

Railsアプリから投稿するとログインユーザーごとにTwitterへ連動して投稿させたい

Boston12121

総合スコア10

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2020/02/23 06:15

編集2020/02/23 14:07

ユーザーごとにログインして、投稿するとTwitterにも連動して同じ内容が投稿されるようにしたいのですが、
access_token,access_token_secretの情報をどうやって保存させるのかわかりません。
恐らくaccess_tokenの情報を取得できていないので現状以下エラーが発生しています。
アドバイスいただければと思います。すみませんがよろしくお願いします。
イメージ説明

参考URL
https://teratail.com/questions/165698?link=qa_related_pc

images_controller.rb client = Twitter::REST::Client.new do |config| # applicationの設定 config.consumer_key = ENV["TWITTER_ID"] config.consumer_secret = ENV["TWITTER_APP_SECRET"] config.access_token= ENV['TWITTER_ACCESS_TOKEN'] config.access_token_secret = ENV['TWITTER_ACCESS_TOKEN_SECRET'] end client.update("test")
omniauth_callbacks_controller.rb omniauth = request.env['omniauth.auth'] omniauth.credentials.token omniauth.credentials.secret

==============追記====================
色々試しましたが、やはりアクセストークンを取得できません。。
ググっても情報があまり転がっていなくてお手上げです。。
下記コードの部分の指定が間違っているんだと思うのですが、どう書けばいいのかわからず。

omniauth = request.env['omniauth.auth'] omniauth.credentials.token #ここの部分 omniauth.credentials.secret #ここの部分

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

images_controller.rbでaccess_tokenを設定しているこの部分ですが、本当にこの通りの記述だとしたら怪しいと思います

images_controller.rb

config.access_token= ENV['TWITTER_ACCESS_TOKEN'] config.access_token_secret = ENV['TWITTER_ACCESS_TOKEN_SECRET']

コントローラーが別なのでsessionに格納して共有するのはどうでしょうか
こんな感じです

images_controller.rb

client = Twitter::REST::Client.new do |config| # applicationの設定 config.consumer_key = ENV["TWITTER_ID"] config.consumer_secret = ENV["TWITTER_APP_SECRET"] config.access_token = session[:oauth_token] config.access_token_secret = session[:oauth_token_secret] end client.update("test")

omniauth_callbacks_controller.rb

omniauth = request.env["omniauth.auth"].except("extra") session[:oauth_token] = omniauth['credentials']['token'] session[:oauth_token_secret] = omniauth['credentials']['secret']

確認できそうなこと

質問文からはわからなかったので見た方が良いと思うところを書きます
すでに確認していたらすみません

  • TWITTER_IDとTWITTER_APP_SECRETの設定は正しいか

このコードでconfigに値を設定しているのですが、そもそもENV["TWITTER_ID"]ENV["TWITTER_APP_SECRET"]にはちゃんと値がありますか?

config.consumer_key = ENV["TWITTER_ID"] config.consumer_secret = ENV["TWITTER_APP_SECRET"]
  • 本当にアクセストークンが取得できてないのか

このコードでomniauth.credentials.tokenomniauth.credentials.secretには値が入ってますか?

omniauth = request.env['omniauth.auth'] omniauth.credentials.token #ここの部分 omniauth.credentials.secret #ここの部分

投稿2020/03/03 14:47

sink66

総合スコア88

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Boston12121

2020/03/14 18:56

ネット開通に時間がかかり確認できず返信が遅れ申し訳ございません! 回答ありがとうございます! セッションに格納するやり方で無事いきました。 わかりやすい回答本当に感謝ですm(_ _)m
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問