2016-09-02 15 views
0

youtube apiのドキュメントを読んだ後、私はサーバー側のアプリでyoutubeアカウントのoauth接続を正常に作成しましたが、チャンネルを取得する方法の解決策を見つけることができませんでした取得したこのデータを使用してビューを作成します。 だから私のコードは、(PHPの一部)次のようになります。YouTube api - 過去30日間のチャンネル表示を取得する方法

class YouTube { 

    protected $token; 

    protected $params = []; 

    /** 
    * YouTube constructor. 
    * 
    * @param null $id 
    */ 
    public function __construct($id = null) 
    { 
     if ($id) { 
      $this->token = $this->getToken($id); 
     } 
    } 

    /** 
    * Get api authorization 
    * 
    * @return string 
    */ 
    public function getAuthorizationUrl() 
    { 
     // Make redirect 
     $this->params = [ 
      'client_id' => '########', 
      'redirect_uri' => '######', 
      'scope'  => 'https://gdata.youtube.com&', 
      'response_type'=> 'code&', 
      'access_type' => 'offline' 
     ]; 
     $redirect_url = 'https://accounts.google.com/o/oauth2/auth?' . http_build_query($this->params); 

     return $redirect_url; 
    } 

    /** 
    * Get API token and save account list to db 
    * 
    * @param $code 
    * 
    * @return \App\Models\DynamicDashboard\ThirdPartyAccounts 
    */ 
    public function getCallbackUrl($code) 
    { 
     // Grab the returned code and extract the access token. 
     $this->params = [ 
      'code'   => $code, 
      'client_id'  => '####', 
      'client_secret' => '#####', 
      'redirect_uri' => '#######', 
      'grant_type' => 'authorization_code' 
     ]; 

     // Get access token 
     $command = 'curl --data "' . http_build_query($this->params) . '" https://accounts.google.com/o/oauth2/token'; 
     exec($command, $resultToken); 
     $resultToken = json_decode($resultToken[0]); 

     // Do a request using the access token to get the list of accounts. 
     $command = 'curl -H "Authorization: Bearer ' . $resultToken->access_token . '" https://accounts.google.com/o/oauth2.json'; 
     exec($command, $result); 
     $result = json_decode($result[0]); 

     // Save data to db 
     $account = new ThirdPartyAccounts(); 
     $account->account_id = $result->identity->id; 
     $account->type = 'youtube'; 
     $account->name = $result->identity->first_name . ' ' . $result->identity->last_name; 
     $account->extra_details = json_encode([ 
      'access_token' => $resultToken->access_token, 
      'token_type'  => $resultToken->token_type, 
      'expires_in' => $resultToken->expires_in, 
      'refresh_token' => $resultToken->refresh_token 
     ]); 

     $account->save(); 

     return $account; 
    } 

    /** 
    * Get API token 
    * 
    * @param $id 
    * 
    * @return mixed 
    */ 
    private function getToken($id) 
    { 
     $mainAccount = ThirdPartyAccounts::find($id); 
     $youtubeToken = json_decode($mainAccount->extra_details); 

     return $youtubeToken; 
    } 
} 

しかし、私はこのデータを利用する方法がわからない、私は、チャネルビューを取得するために必要なメソッドを記述する方法がわかりません過去30日間(毎日のデータがあります)。 申し訳ありませんが、私は実際に何をすべきかを理解するためにAPI接続について十分に知りません。何か助けを払うことが歓迎されることを私に説明するほど親切であれば。あなたの時間のためにすべての前にありがとう!

答えて

0

これを行うにはreports.queryメソッドを使用できます。これにより、さまざまなAnalyticsレポートを取得できます。各リクエストは、クエリパラメータを使用してチャンネルIDまたはコンテンツ所有者、開始日、終了日、少なくとも1つのメトリックを指定します。ディメンション、フィルタ、並べ替え命令などの追加のクエリパラメータを提供することもできます。

があり、最後の30日間取得するために提供されたリンクの例だが、それはアプリケーションのスクリプトで書かれています:

var analyticsResponse = YouTubeAnalytics.Reports.query(
'channel==' + channelId, 
oneMonthAgoFormatted, 
todayFormatted, 
'views,likes,dislikes,shares', 
{ 
dimensions: 'day', 
sort: '-day' 
}); 

はPHPでこれを行うには、私はYoutube PHP code samplesを見てお勧めします。それはガイドと指示書がいっぱいです。

関連する問題