Редактировать:
Это может быть не лучшим способом. Но это то, что я сделал в то время. Я попытался с помощью curl и guzzle построить запрос с сеансом cook ie и всем в шапке, чтобы он выглядел как запрос из веб-браузера. Не удалось заставить его работать.
Я использовал идентификатор канала веб-сокета для браузера. Я хочу, чтобы изменения произошли, и связал его с другими вещами, затем зашифровал его с помощью encrypt($string)
. После этого я использовал зашифрованную строку для генерации QR-кода.
Мобильное приложение (которое уже вошло в систему как использованное для аутентификации) отсканировало его и отправило запрос с этой строкой QR и другими данными. Паспорт позаботился об аутентификации части этого запроса. После расшифровки строки QR у меня был идентификатор канала веб-сокета.
Затем я транслировал в этом канале правильные событие и данные . Поймал эту трансляцию в браузере и перезагрузил эту страницу с JavaScript.
/*... processing other data ...*/
$broadcastService = new BroadcastService();
$broadcastService->trigger($channelId, $eventName, encrypt($$data));
/*... returned response to the mobile app...*/
My BroadcastService:
namespace App\Services;
use Illuminate\Support\Facades\Log;
use Pusher\Pusher;
use Pusher\PusherException;
class BroadcastService {
public $broadcast = null;
public function __construct() {
$config = config('broadcasting.connections.pusher');
try {
$this->broadcast = new Pusher($config['key'], $config['secret'], $config['app_id'], $config['options']);
} catch (PusherException $e) {
Log::info($e->getMessage());
}
}
public function trigger($channel, $event, $data) {
$this->broadcast->trigger($channel, $event, $data);
}
}
На мой взгляд:
<script src="{{asset('assets/js/pusher.js')}}"></script>
<script src="{{asset('assets/js/app.js')}}" ></script>
<script>
<?php
use Illuminate\Support\Facades\Cookie;
$channel = 'Channel id';
?>
Echo.channel('{{$channel}}')
.listen('.myEvent' , data => {
// processing data
window.location.reload();
});
</script>
I Для этого использовали Laravel Эхо .
Опять же, это не лучший способ сделать это. Это то, что мне подходит для этой конкретной функции.
Может быть, есть много лучших способов сделать это. Если кто-то знает лучший подход, пожалуйста, дайте мне знать.
Насколько я понимаю, вы хотите реализовать создание пользователей и аутентификацию через REST. А затем получить данные из базы данных. Поправьте меня, если я ошибаюсь.
И я предполагаю, что вы уже знаете, как общаться через API с помощью токена. Вы просто знаете, как реализовать это с laravel.
. Вы можете использовать Laravel Passport для аутентификации. У него действительно хорошая документация .
Также воспользуйтесь этой средней статьей . Это поможет вам go в пошаговом процессе.