Laravel Socialite - метод handleProviderCallback () не показывает сохраненный сеанс - PullRequest
0 голосов
/ 31 марта 2020

Я пытаюсь интегрировать Socialite в мой проект Laravel. Я пытаюсь сохранить сеанс в файле customerSignup.blade. php, а затем пытаюсь получить это значение сеанса в методе handleProviderCallback () Socialite. Но это не показывает никакой ценности, не знаю почему. Хотя другой метод redirectToProvider () показывает значение сеанса.

Мне нужно это значение сеанса в методе handleProviderCallback (), чтобы обработать его и предпринять действия, основанные на значении сеанса. Ниже приведен фактический код, который я использую.

Сохранение значения сеанса в customerSignup.blade. php

@php

\Session::put('buyerSignupFb','true');

@endphp

Попытка получить указанное выше сохраненное значение в handleProviderCallback LoginController's) method.

<?php

namespace App\Http\Controllers\Auth;

use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Illuminate\Http\Request;
use Auth;
use App\sellerData;
use App\buyerData;
use App\sellerDealCat;
use App\subCatData;
use App\Session;
use App\User;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\DB;
use Socialite;

class LoginController extends Controller
{

  use AuthenticatesUsers;

 protected $redirectTo = '/home';

 public function __construct()
    {
        $this->middleware('guest')->except('logout');
        $this->middleware('guest:seller')->except('logout');
        $this->middleware('guest:buyer')->except('logout');

    }


public function redirectToProvider()

{

return Socialite::driver('facebook')->redirect();


}

public function handleProviderCallback()
{

//cant get the value of the session defined in buyerSignup.blade.php
// echo doesn't work too

return \Session()->get('buyerSignupFb');


}

}

Любое предложение, что я делаю неправильно или как заставить его работать. ТИА

1 Ответ

0 голосов
/ 31 марта 2020

У вас все хорошо, но не достаточно, сначала вы устанавливаете провайдера перенаправления

public function redirectToProvider()

{
     return Socialite::driver('facebook')->stateless()->redirect();
}

хорошо, когда пользователь даст доступ к своему токену, вам нужно обработать обратный вызов в handleProviderCallback(), где вам нужно обменять пользователя auth code на acces token. Весь этот светский человек делает автоматически, все, что тебе нужно, просто назови его

public function handleProviderCallback()
{
    $externalUser = Socialite::driver('facebook')->stateless()->user();

\\check if user exists, if not create

    $auth->login($user, true);

    if ($user->type = 'seller'){$this->redirectTo = '/forSellers'} else {$this->redirectTo = '/forOtherGroup'}

    return redirect($this->redirectPath());
}
...