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.
Schlüsselmerkmale:
Google_Service_YouTube
-Klasse für Video -Abrufen. part
. 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.
Projekt -Setup:
Installieren Sie nach der Installation von Laravel 5 den Google API -Client:
composer require google/apiclient
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>
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') ];
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(); } }
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.'); } } }
Routen (Routen/web.php):
Route::get('/login', [GoogleLoginController::class, 'index'])->name('login'); Route::get('/loginCallback', [GoogleLoginController::class, 'store'])->name('loginCallback');
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')); }); } }
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]]); } }
Routen (Routen/web.php):
Route::get('/', [YouTubeController::class, 'index']); Route::get('/video/{videoId}', [YouTubeController::class, 'show']);
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
Ansichten (Ressourcen/Ansichten/Video.blade.php): (vereinfachtes Beispiel)
composer require google/apiclient
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!