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

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

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

Twitterは、140文字以内の「ツイート」と呼ばれる短文を投稿できるサービスです。Twitter上のほぼ全ての機能に対応するAPIが存在し、その関連サービスが多く公開されています。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

Q&A

解決済

1回答

1812閲覧

Laravel5.5 Twitter認証でoauthトークンが異なる

nnahito

総合スコア2004

Twitter

Twitterは、140文字以内の「ツイート」と呼ばれる短文を投稿できるサービスです。Twitter上のほぼ全ての機能に対応するAPIが存在し、その関連サービスが多く公開されています。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

0グッド

0クリップ

投稿2018/02/21 15:30

編集2018/02/21 16:39

事象が違いました。申し訳ございません。修正しました。

タイトル通りです。

以下の記事を参考に、Laravel5.5でTwitter認証の機能を作ったのですが、
php artisan serveコマンドで建てた環境だと、認証前のセッションに書き込んだoauth_tokenの値と、
返ってきたoauth_tokenは一緒なのですが、
さくらのレンタルサーバだと、違う値が取得されます。

これは何故なのでしょうか?

参考サイト様
https://qiita.com/sofpyon/items/982fe3a9ccebd8702867

該当部分コード(ログイン時)

php

1// TwitterOAuth をインスタンス化 2 $connection = new TwitterOAuth(self::CONSUMER_KEY, self::CONSUMER_SECRET); 3 4 // コールバックURLをここでセット 5 $request_token = $connection->oauth('oauth/request_token', ['oauth_callback' => self::OAUTH_CALLBACK]); 6 7 // セッションにデータを保存しておく 8 Session::put('oauth_token', $request_token['oauth_token']); 9 Session::put('oauth_token_secret', $request_token['oauth_token_secret']); 10 Session::save(); 11 12 // Twitter.com 上の認証画面のURLを取得 13 $url = $connection->url('oauth/authenticate', ['oauth_token' => $request_token['oauth_token']]); 14 15 //Twitter.com の認証画面へリダイレクトURLを返す 16 return $url;

該当部分コード(コールバック時)

php

1// セッションに書き込まれている、アクセストークンを取得 2 $oauth_token = []; 3 $oauth_token['oauth_token'] = Session::get('oauth_token'); // からっぽ 4 $oauth_token['oauth_token_secret'] = Session::get('oauth_token_secret'); // からっぽ 5 6 // トークンが取得できなかた場合 7 if (empty($oauth_token['oauth_token']) || empty($oauth_token['oauth_token_secret'])) { 8 // falseを返す 9 return false; 10 } 11 12 // oauth_tokenとoauth_token_secretをキーにした連想配列が返る 13 return $oauth_token;

これは何故なのでしょうか?
もともと$request->sessionのカタチでやっていたのですが、
https://teratail.com/questions/38215
の記事を参考にして今の形に直しましたがだめでした。

理由が全くわからず困っております。
ご存じの方がいらっしゃいましたら、ご教示いただけますと幸いです。

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

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

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

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

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

guest

回答1

0

ベストアンサー

とりあえずLaravelでのTwitter認証はSocialite使ってください。
https://readouble.com/laravel/5.5/ja/socialite.html

コントローラーでnewを使ったら90%の場面でLaravelの使い方間違えてると思っていい。
メールとかキューとか一部ではnewを使うけど普通のPHPっぽくクラスをインスタンス化したら確実に間違い。

newが出てきたらテストしにくいコードの臭い…というのはLaravelに限らず一般的な話。

投稿2018/02/21 17:03

kawax

総合スコア10377

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

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

nnahito

2018/02/21 17:56

ご回答ありがとうございます。 > Socialite使ってください こんなの有るんですね。使ってみます。 > コントローラーでnewを使ったら90%の場面でLaravelの使い方間違えてると思っていい。 > メールとかキューとか一部ではnewを使うけど普通のPHPっぽくクラスをインスタンス化したら確実に間違い。 何故でしょうか?テストがしにくくなるだけという理由でしょうか? オブジェクト指向はよくわかっていないので、ピンときませんでした。 それと結局、Session::putでもセッションは保持されていませんでした…… Laravelのセッションは、ずっと残ってたりしないのでしょうか? 通常のphp.iniだと20分強セッションが最低でも残ると思うのですが…
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問