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

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

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

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

Nuxt.js

Nuxt.jsは、ユニバーサルなSPAが開発可能なVue.jsベースのフレームワーク。UIの描画サポートに特化しており、SSRにおけるサーバーサイドとクライアントサイドのUIレンダリングなどさまざまな機能を持ちます。

Laravel 5

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

Q&A

3回答

1597閲覧

Laravel + Socialite + Vue(Nuxt)でtwitter認証をしようとするとsession周りで躓きます。

hotsplus

総合スコア653

Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

Nuxt.js

Nuxt.jsは、ユニバーサルなSPAが開発可能なVue.jsベースのフレームワーク。UIの描画サポートに特化しており、SSRにおけるサーバーサイドとクライアントサイドのUIレンダリングなどさまざまな機能を持ちます。

Laravel 5

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

0グッド

0クリップ

投稿2018/05/06 12:52

https://qiita.com/hareku/items/ea09602bf40bf0a42040を参考にしてやっています。

エラーの内容としては

Type error: Argument 1 passed to League\OAuth1\Client\Server\Server::getTokenCredentials() must be an instance of League\OAuth1\Client\Credentials\TemporaryCredentials, null given, called in /vendor/laravel/socialite/src/One/AbstractProvider.php on line 113

というもので

$temp = $this->request->session()->get('oauth.temp');

ここの行でSessionからoauth.tempが取得できなくnullとなってしまいます。

server側を127.0.0.1:8000のphp artisan servで動かしており、
client側はnuxtで127.0.0.1:3000で動かしております。

処理手順としては
[1]Client : /redirectにアクセスするとserver側のauth/twitter/redirectへGETでAPI通信
[2]server : redirect用のURL変換
[3]Client : token月のURLをもらってtwitterへ行き認証 /callbackへ戻る
[4]Client : tokenがquerystringで付いているのでそれをつけてserverのcallbackへ送る

[4]の処理のところで

$user = Socialite::driver('twitter')->user();

をしており、ここでSessionにoauth.tempがないので上記のエラーが出ています。
1~4のserver処理を手動でやるとしっかりSessionに入っているのですがclientとserverを組み合わせてやるとできません。

[1]の通信のSocialite::driver('twitter')->redirect()->getTargetUrl()でSessionに書かれると思うんですがそれが引き継げていない?状況なのかなと思います。

どなたかご教授ください。

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

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

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

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

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

guest

回答3

0

こちら、自分は解決しました!!
Twitterだと、
Socialite::driver('twitter')->user();ではなく、
Socialite::driver('twitter')->userFromTokenAndSecret($access_token, $access_token_secret)じゃないとユーザー情報引っ張れないみたいです。。。

$access_tokenと、
$access_token_secretは、https://developer.twitter.com/en/appsの「Keys and tokens」タブで作成できます。

SNSによってこんなにも仕様が違うとは…参考になれば嬉しいです!

投稿2019/04/11 17:44

nooboolean

総合スコア18

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

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

hotsplus

2019/04/25 17:07

結局できずに、他の方法でやってしまいました。。。 再度laravel+nuxtでやって見たのですが、同じところで詰まってしまいました;c; もしよければそこのコードをgithubなどでオープンにしていただく事は可能でしょうか?
nooboolean

2019/08/13 17:29 編集

すみません。こちら嘘でした… 現在確認したところ、下記のコードどちらも動きます。。。 `Socialite::driver('twitter')->user();` `Socialite::driver('twitter')->userFromTokenAndSecret($access_token, $access_token_secret)` どうやらこことは関係のないところで知らぬ間にSessionの問題は解決されたみたいでした… 結局謎に包まれたままで気持ち悪いのですが、大変申し訳ございません。。。
guest

0

こちら、自分も同じところでつまずいているのですが、その後解決しましたでしょうか?
ご回答宜しくお願い致します。

投稿2019/04/07 09:16

nooboolean

総合スコア18

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

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

0

自分では使わないけどステートレスにすればセッションは無効になる。
https://readouble.com/laravel/5.6/ja/socialite.html#stateless-authentication

return Socialite::driver('google')->stateless()->user();

もしくは記事にあるCORSが足りないのでは。

Socialite使うなら普通のLaravelの使い方するのでこれを使うことはほぼない。
普通じゃない使い方してこうやって躓くなら全く便利になってないということ。

投稿2018/05/06 14:59

kawax

総合スコア10377

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

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

hotsplus

2018/05/07 00:30

回答ありがとうございます。 こちら試して見たいと思います。 corsについては、現状ローカルなので全てのドメインから許可するようにしております。
hotsplus

2018/05/07 12:24

試して見たのですが、twitter認証に付いてはstatelessのmethodは用意されてないみたいです・・・
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問