저는 위 에러 파일에서 set() 을 put()으로 변경해서 해결했습니다.
https://github.com/laravel/framework/issues/17397
composer update를 하면 결국 돌아가더라구요. socialite 버전을 조금 낮추시는것을 추천드립니다...
아아감사합니다. 알고보니 제가 설정을 가상호스트?도메인? 으로 설정해놓고선 localhost로 접속하면 소셜로그인이 안되더라구요ㅠㅠ 항상 가상호스트로 접속하면 됩니다ㅎㅎ
소셜 로그인을 위한 콜백 URL은 제3자 서비스에서 되돌아올 때만 유효합니다. 예를들어 facebook 을 이용한 로그인을 시도할 때 콜백 URL은 facebook이 리다이렉트 해서 되돌아오는 경우에만 유효한 것입니다.
겪고 계신 문제는 제3자 서비스를 이용한 로그인 이후 단계에서 뭔가 문제가 발생하여(예를들어 validation 실패) 소셜 로그인을 위한 콜백 URL로 되돌아갔기 때문으로 보입니다.
handleProviderCallback() 메소드의 코드를 올려주시면 조금 더 자세한 답을 드릴 수 있을 것 같습니다.
답변 감사합니다. 소스코드 올리겟습니다!
public function handleProviderCallback($provider) { //dd("d"); //이 부분 주석 해제시에는 d가 찍혔습니다. $user = \Socialite::driver($provider)->user(); dd("d"); //이부분이 실행되지 않습니다. $user = (\App\User::whereEmail($user->getEmail())->first()) ?: \App\User::create([ 'name' => $user->getName()?:'unknown', 'email' => $user->getEmail(), 'activated' =>1, ]); auth()->login($user); flash( auth()->user()->name . "님 환영합니다."); return redirect('home'); }
아래와 같이 했을 때는 어떤 결과가 나오나요?
$user = \Socialite::driver($provider)->user(); dd($user);
그리고, 위에서 소셜 사용자 객체(\Laravel\Socialite\Contracts\User)가 잘 덤프된다면, 다음과 같이 코드를 바꾸어 라라벨 로그에 어떤 예외가 찍히는 지 확인해 주세요.
try { $user = (\App\User::whereEmail($user->getEmail())->first()) ?: \App\User::create([ 'name' => $user->getName()?:'unknown', 'email' => $user->getEmail(), 'activated' =>1, ]); } catch (\Exception $e) { \Log::debug($e); throw $e; }
오늘은 이상하게 또
$user = \Socialite::driver($provider)->user(); dd($user);
여기서 로그인 정보가 잘뜨며 로그인이 정상적으로 됩니다, 밑에 코드에도 catch 할게 없어서 로그도 안찍히구요.... 왜 될땐 되는거고 안될땐 안되는걸까요?
$user = \Socialite::driver($provider)->user(); dd($user);
갑자기 또 이부분 실행하니까 에러가 납니다.
InvalidStateException in C:\Users\SAMSUNG\myapp2\vendor\laravel\socialite\src\Two\AbstractProvider.php line 200:
이런 에러입니다... 어짜다가 되고 어쩌다가 안되고...이유르 모르겟습니다.
Oauth 과정의 시작부터 끝까지 세션에 state 값을 유지합니다. 세션 값을 계속 추적해 보시면 답을 찾을 수 있을 겁니다. Oauth를 처음 요청하는 URL 스킴/DNS/포트와 콜백을 받는 스킴/DNS/포트가 다르지 않은지도 확인해주세요. (http://127.0.0.1 → x → http://localhost:8000 이렇게는 안됩니다.)
https://github.com/laravel/socialite/blob/3.0/src/Two/AbstractProvider.php#L142-L144