無効の状態の例外?という訳しか浮かばないが、、公式のドキュメントを見ると、statelessなやり方を推奨している。
そもそもstateとはなんぞや、ということで調べてみた。
https://milestone-of-se.nesuke.com/nw-basic/as-nw-engineer/stateful-and-stateless/
二つの記事を総合して考えると、
セッションの状態とは、一連のインタラクティブな操作(session)における各状態(state)のことであり、ステートフル(情報が保持されている)なら、情報が保持されているため、状態によってサーバーからのレスポンスが異なり、メールなどに使用される。
一方で、ステートレスなら、ステート(状態)がレス(保持されていない)ので、誰に対しても同じ反応をするので、HTTPやHttpsに使用される。
つまり、InvalidStateExceptionとは無効の状態の申し立てではないでしょうか?
ならば、こちらを変更しようと思い、以下のようにしました。
$user = Socialite::driver($social)->user();
を変更して
$user = Socialite::driver($social)->stateless()->user();
すると、エラーの内容が変わりました。
Client error: GET https://api.github.com/user resulted in a 401 Unauthorized response: { "message": "Bad credentials", "documentation_url": "https://developer.github.com/v3" }
調べてみると
https://developer.mozilla.org/ja/docs/Web/HTTP/Status/401
「HTTP 401 Unauthorized は、有効な認証資格が不足していることによりリクエストが適用されないことを示すクライアントエラーのレスポンスコードです。」
ん、、、、あ、そもそもGitHubの認証情報を得られていないということか。
$social = basename(parse_url($this->getUrl(),PHP_URL_PATH));
//ユーザー属性を取得
$user = Socialite::driver($social)->stateless()->user();
echo '<pre>'; print_r($user); echo'<pre>';exit;
}```
こんな感じのコールバックの受け取り方だったのだが、変更することにした。