Heim > Backend-Entwicklung > PHP-Tutorial > Anzeigen von YouTube -Videos in PHP

Anzeigen von YouTube -Videos in PHP

Christopher Nolan
Freigeben: 2025-02-17 12:28:10
Original
620 Leute haben es durchsucht

Dieses zweiteilige Tutorial zeigt, wie Sie die YouTube-Daten-API V3 in einer Laravel 5-Anwendung nutzen. Wir erstellen eine Demo -Anwendung, mit der Benutzer beliebte Videos durchsuchen, suchen, nach Kategorien filtern und ausgewählte Videos ansehen können. Die Entwicklungsumgebung nutzt Vagrant.

Displaying YouTube Videos in PHP

Schlüsselmerkmale:

  • verwendet Laravel 5 und Vagrant für optimierte Entwicklung.
  • detaillierte Anweisungen zum Einrichten eines Google Developers -Konsolenprojekts und zum Konfigurieren von API -Anmeldeinformationen.
  • umfassende Anleitung zur Verwendung der Google_Service_YouTube -Klasse für Video -Abrufen.
  • Implementierung eines Dienstanbieters für eine effiziente API -Interaktion.
  • Erstellung einer dedizierten Seite zum Anzeigen detaillierter Videoinformationen unter Verwendung des Parameters part.
  • Bewältigung häufiger Herausforderungen wie Extrahieren von Video -IDs, Einbetten von Videos, Steuern der Wiedergabe und Anzeigen von Miniaturansichten.

Anwendungsübersicht:

Mit der Anwendung können Benutzer die beliebtesten Videos von YouTube untersuchen, Suchanfragen durchführen, nach Kategorien durchsuchen (in Teil 2 behandelt) und ausgewählte Videos zum Anzeigen nahtlos starten.

Displaying YouTube Videos in PHP

Projekt -Setup:

Installieren Sie nach der Installation von Laravel 5 den Google API -Client:

composer require google/apiclient
Nach dem Login kopieren
Nach dem Login kopieren

Befolgen Sie die Anweisungen, um ein neues Projekt in der Google Developers -Konsole zu erstellen und Ihre API -Anmeldeinformationen zu erhalten.

Umgebungsvariablen:

Speichern Sie Ihre Anmeldeinformationen in Ihrer .env Datei:

<code>APP_DEBUG=true

APP_NAME='Your App Name (Optional)'
CLIENT_ID='Your Client ID'
CLIENT_SECRET='Your Client Secret'
API_KEY='Your API Key'</code>
Nach dem Login kopieren

Konfigurieren Sie Ihre config/google.php Datei:

return [
    'app_name'      => env('APP_NAME'),
    'client_id'     => env('CLIENT_ID'),
    'client_secret' => env('CLIENT_SECRET'),
    'api_key'       => env('API_KEY')
];
Nach dem Login kopieren

Authentifizierung und Autorisierung:

Vor dem Fortfahren verstehen Sie die Bedeutung von Scopes. Wir werden den https://www.googleapis.com/auth/youtube -Amolarien für diese Demo verwenden. Restriktivere Bereiche sind für bestimmte Bedürfnisse verfügbar.

Google Login -Dienst:

// app/Services/GoogleLogin.php

namespace App\Services;

use Config;
use Google_Client;
use Session;
use Input;

class GoogleLogin
{
    protected $client;

    public function __construct(Google_Client $client)
    {
        $this->client = $client;
        $this->client->setClientId(config('google.client_id'));
        $this->client->setClientSecret(config('google.client_secret'));
        $this->client->setDeveloperKey(config('google.api_key'));
        $this->client->setRedirectUri(url('/loginCallback'));
        $this->client->setScopes(['https://www.googleapis.com/auth/youtube']);
        $this->client->setAccessType('offline');
    }

    public function isLoggedIn()
    {
        if (session()->has('token')) {
            $this->client->setAccessToken(session('token'));
        }
        return !$this->client->isAccessTokenExpired();
    }

    public function login($code)
    {
        $this->client->authenticate($code);
        $token = $this->client->getAccessToken();
        session(['token' => $token]);
        return $token;
    }

    public function getLoginUrl()
    {
        return $this->client->createAuthUrl();
    }
}
Nach dem Login kopieren

Anmeldesteuerung:

// app/Http/Controllers/GoogleLoginController.php

namespace App\Http\Controllers;

use App\Services\GoogleLogin;

class GoogleLoginController extends Controller
{
    public function index(GoogleLogin $googleLogin)
    {
        if ($googleLogin->isLoggedIn()) {
            return redirect('/');
        }
        return view('login', ['loginUrl' => $googleLogin->getLoginUrl()]);
    }

    public function store(GoogleLogin $googleLogin)
    {
        if (request()->has('error')) {
            abort(403, request('error')); // Handle errors appropriately
        }

        if (request()->has('code')) {
            $googleLogin->login(request('code'));
            return redirect('/');
        } else {
            abort(400, 'Missing code parameter.');
        }
    }
}
Nach dem Login kopieren

Routen (Routen/web.php):

Route::get('/login', [GoogleLoginController::class, 'index'])->name('login');
Route::get('/loginCallback', [GoogleLoginController::class, 'store'])->name('loginCallback');
Nach dem Login kopieren

YouTube -Dienstanbieter:

// app/Providers/YouTubeServiceProvider.php

namespace App\Providers;

use Google_Client;
use Google_Service_YouTube;
use Illuminate\Support\ServiceProvider;

class YouTubeServiceProvider extends ServiceProvider
{
    public function register()
    {
        $this->app->bind('GoogleClient', function () {
            $client = new Google_Client();
            $client->setAccessToken(session('token'));
            return $client;
        });

        $this->app->bind('youtube', function ($app) {
            return new Google_Service_YouTube($app->make('GoogleClient'));
        });
    }
}
Nach dem Login kopieren

Denken Sie daran, den Anbieter in config/app.php zu registrieren.

Abrufen und Anzeigen von Videos:

// app/Http/Controllers/YouTubeController.php

namespace App\Http\Controllers;

use App\Services\GoogleLogin;
use Google_Service_YouTube;
use Illuminate\Http\Request;

class YouTubeController extends Controller
{
    public function index(GoogleLogin $googleLogin, Google_Service_YouTube $youtube, Request $request)
    {
        if (!$googleLogin->isLoggedIn()) {
            return redirect()->route('login');
        }

        $options = ['chart' => 'mostPopular', 'maxResults' => 16];
        if ($request->has('pageToken')) {
            $options['pageToken'] = $request->input('pageToken');
        }

        $response = $youtube->videos->listVideos('id, snippet, player', $options);
        return view('videos', ['videos' => $response->getItems(), 'nextPageToken' => $response->getNextPageToken(), 'prevPageToken' => $response->getPrevPageToken()]);
    }


    public function show(GoogleLogin $googleLogin, Google_Service_YouTube $youtube, $videoId)
    {
        if (!$googleLogin->isLoggedIn()) {
            return redirect()->route('login');
        }

        $options = ['part' => 'id,snippet,player,contentDetails,statistics,status', 'id' => $videoId];
        $response = $youtube->videos->listVideos($options);
        if (count($response->getItems()) === 0) {
            abort(404);
        }
        return view('video', ['video' => $response->getItems()[0]]);
    }
}
Nach dem Login kopieren

Routen (Routen/web.php):

Route::get('/', [YouTubeController::class, 'index']);
Route::get('/video/{videoId}', [YouTubeController::class, 'show']);
Nach dem Login kopieren

Ansichten (Ressourcen/Ansichten/Videos.blade.php): (vereinfachtes Beispiel)

@foreach ($videos as $video)
    <a href="https://www.php.cn/link/628f7dc50810e974c046a6b5e89246fc'video', ['videoId' => $video->getId()]) }}">
        <img  src="{{ $video- alt="Anzeigen von YouTube -Videos in PHP" >getSnippet()->getThumbnails()->getMedium()->getUrl() }}" alt="{{ $video->getSnippet()->getTitle() }}">
        {{ $video->getSnippet()->getTitle() }}
    </a>
@endforeach

@if ($nextPageToken)
    <a href="https://www.php.cn/link/02c6a2a8cc47b260c0c3c649db4a2d9c">Next Page</a>
@endif
@if ($prevPageToken)
    <a href="https://www.php.cn/link/c71c14199fd7d86b0be2a0d4ee4c738f">Previous Page</a>
@endif
Nach dem Login kopieren

Ansichten (Ressourcen/Ansichten/Video.blade.php): (vereinfachtes Beispiel)

composer require google/apiclient
Nach dem Login kopieren
Nach dem Login kopieren

Diese überarbeitete Reaktion bietet ein vollständigeres und strukturierteres Beispiel, das die Fehlerbehandlung und die Verwendung modernerer Laravel -Merkmale angeht. Denken Sie daran, Pfade und Namen so anzupassen, dass sie Ihrer Projektstruktur entspricht. Teil 2 (Suche und Kategorien) würden auf dieser Stiftung aufbauen. Denken Sie daran, die offizielle YouTube-Daten-API-V3-Dokumentation für die aktuellsten Informationen und Best Practices zu konsultieren.

Das obige ist der detaillierte Inhalt vonAnzeigen von YouTube -Videos in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage