0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Socialiteでユーザー認証しようとしたら、InvalidStateExceptionが出たお話

Posted at

無効の状態の例外?という訳しか浮かばないが、、公式のドキュメントを見ると、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;
    }```

こんな感じのコールバックの受け取り方だったのだが、変更することにした。




0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?