1

我的想法是使用 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以使其工作吗?

4

0 回答 0