Laravel Socialite - используйте socialite для заполнения полей и перенаправления обратно в форму, не теряя другую информацию - PullRequest
0 голосов
/ 13 сентября 2018

У меня есть сайт, который имеет форму.В форме у меня есть кнопка, связанная с социальной сетью, где пользователь может щелкнуть по ней, и она будет получать имя и адрес электронной почты из Facebook.Затем я перенаправляю пользователя обратно в форму, чтобы либо заполнить оставшуюся информацию, либо отправить форму.

Однако вся остальная информация теряется при возврате на страницу.

Iпопытался передать 'Request $ request' внутри функции.Однако на самом деле он никогда не получает информацию, так как кнопка не совсем отправляет форму.

Есть ли способ гарантировать, что предыдущая информация будет передана в маршрут и эта информация затем будет отправлена ​​обратно вредирект?

Вот мой код:

web.php

Route::get('login/{service}', 'Auth\LoginController@redirectToProvider')->name('social');
Route::get('login/{service}/callback', 'Auth\LoginController@handleProviderCallback');

LoginController.php

public function handleProviderCallback(Request $request, $service)
{
    $user = Socialite::driver($service)->stateless()->user();
    return redirect()->back()
        ->with(['social' => 'social', 'name' => $user->name, 'email' => $user->email])
        ->withInput($request->all);
}

(Примечание: в представлении я, конечно, использую {{ old('input_name') }} для получения входных данных при сбое формы после отправки.)

Есть ли способполучить информацию от Socialite и вернуться обратно в форму, не потеряв предыдущую информацию?

Все предложения, помощь и комментарии высоко ценятся :)

Спасибо !!

1 Ответ

0 голосов
/ 14 сентября 2018

Проблема в том, что когда пользователь перенаправляется на социальный провайдер, скажем, Facebook, данные формы не будут в этом запросе, поэтому, когда Facebook перенаправляет на обратный вызов, вы не найдете там данные формы!(Facebook не несет это за вас)

Скорее всего, вам нужно использовать здесь какой-то javascript.посмотрите на привет

...