0

私の未熟な経験から、APIキーを非表示にする方法がわかりません。申し訳ありませんが、私はリレーショナルデータベースを専門とするため、15年間Web開発を離れていましたが、多くの変更がありました。サーバーを使用しているクライアント用のYouTube APIを隠している

私は1トンの記事を読んだことがありますが、それらを活用する方法を理解していません。私は自分のYouTube APIキーをサーバーに置いてもらいたいのですが、クライアントには公開されていないものを使うことができます。自分のサーバー(ISP提供)でAPIキーを設定することで、クライアントがプロジェクトに関連付けられたYouTubeチャンネルにアクセスできるようになる方法がわかりません。誰かが私にこれを説明することはできますか?

答えて

1

あなたがしたいことはわかりませんが、私が取り組んだプロジェクトでは、YouTubeから特定のプレイリストを取得し、そのコンテンツをウェブサイトの訪問者に公開する必要がありました。

私がしたことは、プロキシのようなものです。私はphiファイルを設定し、apiキーを含んでいます。そして、エンドユーザにこのphpファイルを通してYTコンテンツを取得させてください。

phpファイルは、curlを使用してコンテンツフォームYTを取得します。

私はそれが役に立ちそうです。

EDIT 1

キーを非表示にする方法は、サーバー上のPHPファイルにそれを置くことです。 このPHPファイルは、youtubeに接続し、クライアントページで必要なデータを取得するものです。

正しいapiキーと正しいプレイリストIDを持つこのコード例は、プレイリストの最初の10トラックのjsonファイルを取得します。

$ respにはjsonデータがあります。それを抽出するには、例えば連想配列にデコードする必要があります。配列に入ると、クライアントブラウザでレンダリングされるhtmlに簡単に混在させることができます。

<?php   
     $apiKey = "AIza..."; 
     $results = "10"; 
     $playList = "PL0WeB6UKDIHRyXXXXXXXXXX..."; 


     $request = "https://www.googleapis.com/youtube/v3/playlistItems?part=id,contentDetails,snippet&maxResults=" . $results . 
        "&fields=items(contentDetails%2FvideoId%2Cid%2Csnippet(position%2CpublishedAt%2Cthumbnails%2Fdefault%2Ctitle))" . 
        "&playlistId=" . $playList . 
        "&key=" . $apiKey; 



     $curl = curl_init(); 
     curl_setopt_array($curl, array(
      CURLOPT_RETURNTRANSFER => true, 
      CURLOPT_URL => $request, 
      CURLOPT_SSL_VERIFYPEER => false 
     ));  

     $resp = curl_exec($curl); 


     if (curl_errno($curl)) { 
      $status = "CURL_ERROR"; 
     }else{ 
      // check the HTTP status code of the request 
      $resultStatus = curl_getinfo($curl, CURLINFO_HTTP_CODE); 
      if ($resultStatus == 200) { 
       $status = "OK"; 
       //Do something with the $resp which is in JSON format. 
       //Like decoding it into an associative array 
      } else { 
       $status = "YT_ERROR"; 
      } 
     } 

     curl_close($curl); 
?> 
<html> 
<!-- your html here --> 
</html> 

注:CURLOPT_SSL_VERIFYPEERはfalseに設定されます。これは開発中です。それは真実でなければなりません。

このようにAPIを使用すると、apiキーを呼び出してそのアプリケーションをドメインに制限することができます。あなたはgooglaのapiコンソールでそれを行います。 (生産上のヒント)

+0

推測私は正しく質問していない。私はYouTubeのチャンネルgapi.client.setApikey()に続いて、テストページのgapi.client.youtube.playlist.list()の再生リストのリストを作成するクライエントページを持っています(すべては現在localhostです)。これは、クライアントページに公開されたAPIキーがあることを意味します。私はISPに移ったときにサーバー側でそれを隠したいと思っていますが、クライアントとのやりとりの仕方はわかりません。 – CapnPamma

+0

私は自分の答えを編集して、より多くの情報と拡張できる基本例を追加しました。 – Juan

+0

ありがとうございます。私はこれを恐れていた。完璧な意味合いを持つ。私は非常に一般的な必要性だと思うもののために厄介だと思うが、それはそれであり、私は別の方法を見つけるのに十分スマートではない。 – CapnPamma

関連する問題