Laravel socialite - используйте socialite для заполнения полей и перенаправления обратно в форму без потери другой информации

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

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

Я попытался передать в функцию «Запрос $ запрос». Однако на самом деле он никогда не получает информацию, поскольку кнопка точно не отправляет форму.

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

Вот мой код:

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 и вернуться к форме без потери предыдущей информации?

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

Спасибо!!

Должен ли пользователь необходимость войти в систему, чтобы отправить форму, или есть возможность просто сохранить его, чтобы заполнить некоторые из своих данных?

Rwd 13.09.2018 21:43

Отличный вопрос @RossWilson. Нет, пользователю не нужно входить в систему, чтобы отправить форму. На самом деле это всего лишь вариант. Итак, вы можете заполнить форму, не делая этого.

Brad Ahrens 13.09.2018 23:39
0
2
252
1

Ответы 1

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

Вероятно, вам понадобится здесь использовать какой-нибудь javascript. посмотрите на привет

Спасибо @barghouthi за идею :) Я проверю ... Другая моя идея заключалась в том, чтобы сделать Socialite во всплывающем окне и никогда не покидать страницу, чтобы мне не приходилось обновлять данные. Я дам вам знать, если это сработает.

Brad Ahrens 14.09.2018 10:04

Hellojs делает именно это. Открывает всплывающее окно для входа в социальную сеть.

zjbarg 14.09.2018 13:32

Другие вопросы по теме