我的想法是使用 Local Tunnel 的子域功能以更方便的方式公开回调 URI。但是,我相信我可以以更简单的方式获得相同的结果。
这是 Laravel Valet 的解决方案:
在package.json我添加了一个名为shared
"scripts": {
...
"share": "lt --port 80 --subdomain blog --local-host blog.test"
}
在AppServiceProvider.php我已经扩展UrlGenerator
以避免重定向回http://blog.test
<?php
namespace App\Providers;
use App\Services\LocalTunnelUrlGenerator;
use Blade;
use Illuminate\Http\Resources\Json\Resource;
use Illuminate\Routing\Router;
use Illuminate\Routing\UrlGenerator;
use Illuminate\Support\ServiceProvider;
class AppServiceProvider extends ServiceProvider
{
public function boot()
{
(...)
}
public function register()
{
$this->enableLocalTunnel();
}
private function enableLocalTunnel()
{
if (!app()->environment('local') || !config('app.use_local_tunnel')) {
return;
}
$this->app->extend('url', function (UrlGenerator $defaultGenerator) {
/** @var Router $router */
$router = $this->app['router'];
$routes = $router->getRoutes();
return new LocalTunnelUrlGenerator($routes, $defaultGenerator->getRequest());
});
}
}
这是LocalTunnelUrlGenerator.php:
<?php
namespace App\Services;
use Illuminate\Http\Request;
use Illuminate\Routing\RouteCollection;
use Illuminate\Routing\UrlGenerator;
class LocalTunnelUrlGenerator extends UrlGenerator
{
public function __construct(RouteCollection $routes, Request $request)
{
parent::__construct($routes, $request);
}
public function formatRoot($scheme, $root = null)
{
return "https://blog.localtunnel.me";
}
}
为什么这一切?因为每当应用程序调用该redirect()
方法时,我们都会返回到http://blog.test。
我真的需要扩展它UrlGenerator
以使其工作吗?