ホームページ バックエンド開発 PHPチュートリアル PHPにYouTubeビデオを表示します

PHPにYouTubeビデオを表示します

Feb 17, 2025 pm 12:28 PM

この2部構成のチュートリアルは、Laravel 5アプリケーション内でYouTube Data API V3を活用する方法を示しています。 ユーザーが人気のあるビデオを閲覧したり、カテゴリごとに検索したり、選択したビデオを視聴できるデモアプリケーションを構築したりできます。 開発環境はVagrantを利用しています

Displaying YouTube Videos in PHP

主要な機能:

    合理化された開発のためにLaravel 5とVagrantを利用します Google Developers Console Projectを設定し、API資格情報を構成するための詳細な手順。
  • ビデオ検索に
  • クラスを使用する包括的なガイダンス。
  • 効率的なAPIインタラクションのためのサービスプロバイダーの実装
  • パラメーターを使用して、詳細なビデオ情報を表示するための専用ページの作成。 ビデオIDの抽出、ビデオの埋め込み、再生の制御、サムネイルの表示など、一般的な課題への対処。Google_Service_YouTube
  • アプリケーションの概要:
  • part
  • このアプリケーションでは、ユーザーがYouTubeの最も人気のあるビデオを探索したり、検索を行ったり、カテゴリごとに閲覧したり(パート2で説明したり)、表示するために選択したビデオをシームレスに起動できます。

プロジェクトのセットアップ:

Laravel 5をインストールした後、Google APIクライアントをインストールした後、

指示に従って、Google Developers Consoleで新しいプロジェクトを作成し、API資格情報を取得します。 Displaying YouTube Videos in PHP

環境変数:

資格情報を

ファイルに保存します:

composer require google/apiclient
ログイン後にコピー
ログイン後にコピー

ファイルを構成:

認証と承認:

.env先に進む前に、スコープの重要性を理解してください。 このデモには

スコープを使用します。 特定のニーズに合わせて、より制限的なスコープが利用可能です
<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>
ログイン後にコピー

Googleログインサービス:config/google.php

return [
    'app_name'      =&gt; env('APP_NAME'),
    'client_id'     =&gt; env('CLIENT_ID'),
    'client_secret' =&gt; env('CLIENT_SECRET'),
    'api_key'       =&gt; env('API_KEY')
];
ログイン後にコピー

ログインコントローラー:

https://www.googleapis.com/auth/youtube

ルート(routes/web.php):

// 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-&gt;client = $client;
        $this-&gt;client-&gt;setClientId(config('google.client_id'));
        $this-&gt;client-&gt;setClientSecret(config('google.client_secret'));
        $this-&gt;client-&gt;setDeveloperKey(config('google.api_key'));
        $this-&gt;client-&gt;setRedirectUri(url('/loginCallback'));
        $this-&gt;client-&gt;setScopes(['https://www.googleapis.com/auth/youtube']);
        $this-&gt;client-&gt;setAccessType('offline');
    }

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

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

    public function getLoginUrl()
    {
        return $this-&gt;client-&gt;createAuthUrl();
    }
}
ログイン後にコピー
YouTubeサービスプロバイダー:

プロバイダーを
// app/Http/Controllers/GoogleLoginController.php

namespace App\Http\Controllers;

use App\Services\GoogleLogin;

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

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

        if (request()-&gt;has('code')) {
            $googleLogin-&gt;login(request('code'));
            return redirect('/');
        } else {
            abort(400, 'Missing code parameter.');
        }
    }
}
ログイン後にコピー

に登録することを忘れないでください ビデオの取得と表示:

Route::get('/login', [GoogleLoginController::class, 'index'])-&gt;name('login');
Route::get('/loginCallback', [GoogleLoginController::class, 'store'])-&gt;name('loginCallback');
ログイン後にコピー

ルート(routes/web.php):

// 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-&gt;app-&gt;bind('GoogleClient', function () {
            $client = new Google_Client();
            $client-&gt;setAccessToken(session('token'));
            return $client;
        });

        $this-&gt;app-&gt;bind('youtube', function ($app) {
            return new Google_Service_YouTube($app-&gt;make('GoogleClient'));
        });
    }
}
ログイン後にコピー

config/app.php

ビュー(リソース/ビュー/videos.blade.php):

(簡略化された例)

// 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-&gt;isLoggedIn()) {
            return redirect()-&gt;route('login');
        }

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

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


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

        $options = ['part' =&gt; 'id,snippet,player,contentDetails,statistics,status', 'id' =&gt; $videoId];
        $response = $youtube-&gt;videos-&gt;listVideos($options);
        if (count($response-&gt;getItems()) === 0) {
            abort(404);
        }
        return view('video', ['video' =&gt; $response-&gt;getItems()[0]]);
    }
}
ログイン後にコピー
ビュー(リソース/ビュー/video.blade.php):

(簡略化された例)

composer require google/apiclient
ログイン後にコピー
ログイン後にコピー

この改訂された応答は、より完全で構造化された例を提供し、エラー処理に対処し、より最新のLaravel機能を使用します。 プロジェクト構造に合わせてパスと名前を調整することを忘れないでください。 パート2(検索とカテゴリ)は、この基盤の上に構築されます。 最新の情報とベストプラクティスについては、公式のYouTubeデータAPI V3ドキュメントを参照してください。

以上がPHPにYouTubeビデオを表示しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

11ベストPHP URLショートナースクリプト(無料およびプレミアム) 11ベストPHP URLショートナースクリプト(無料およびプレミアム) Mar 03, 2025 am 10:49 AM

11ベストPHP URLショートナースクリプト(無料およびプレミアム)

Laravelでフラッシュセッションデータを使用します Laravelでフラッシュセッションデータを使用します Mar 12, 2025 pm 05:08 PM

Laravelでフラッシュセッションデータを使用します

すべてのPHP開発者が持つべき6追加スキル すべてのPHP開発者が持つべき6追加スキル Feb 28, 2025 am 10:52 AM

すべてのPHP開発者が持つべき6追加スキル

PHPの配列を理解します PHPの配列を理解します Feb 28, 2025 am 10:53 AM

PHPの配列を理解します

Laravelテストでの簡略化されたHTTP応答のモッキング Laravelテストでの簡略化されたHTTP応答のモッキング Mar 12, 2025 pm 05:09 PM

Laravelテストでの簡略化されたHTTP応答のモッキング

LaravelのバックエンドでReactアプリを構築する:パート2、React LaravelのバックエンドでReactアプリを構築する:パート2、React Mar 04, 2025 am 09:33 AM

LaravelのバックエンドでReactアプリを構築する:パート2、React

Codecanyonで12の最高のPHPチャットスクリプト Codecanyonで12の最高のPHPチャットスクリプト Mar 13, 2025 pm 12:08 PM

Codecanyonで12の最高のPHPチャットスクリプト

PHPのカール:REST APIでPHPカール拡張機能を使用する方法 PHPのカール:REST APIでPHPカール拡張機能を使用する方法 Mar 14, 2025 am 11:42 AM

PHPのカール:REST APIでPHPカール拡張機能を使用する方法

See all articles