Php YouTube Analytics API登录到单个用户下的多个帐户

Php YouTube Analytics API登录到单个用户下的多个帐户,php,oauth,youtube,google-analytics,google-api-php-client,Php,Oauth,Youtube,Google Analytics,Google Api Php Client,我们目前正在编写一个分析脚本,从Google Analytics和YouTube Analytics获取信息。我们目前正在使用oAUTH身份验证。所有账户都由一个中央谷歌账户绑定在一起。YouTube帐户连接了多个频道。当使用oauth对YouTube Analytics进行身份验证时,它会要求您选择主帐户(链接到Google Analytics并从另一个帐户进行授权访问)或辅助YouTube频道帐户。如果你进入谷歌分析账户,那么YouTube分析不起作用,反之亦然。有人对如何告诉每个API与同

我们目前正在编写一个分析脚本,从Google Analytics和YouTube Analytics获取信息。我们目前正在使用oAUTH身份验证。所有账户都由一个中央谷歌账户绑定在一起。YouTube帐户连接了多个频道。当使用oauth对YouTube Analytics进行身份验证时,它会要求您选择主帐户(链接到Google Analytics并从另一个帐户进行授权访问)或辅助YouTube频道帐户。如果你进入谷歌分析账户,那么YouTube分析不起作用,反之亦然。有人对如何告诉每个API与同一登录令牌下的单独帐户关联有什么建议吗?

此问题的解决方案是创建两个单独的脱机密钥。我在没有数据库连接的情况下完成了这项工作(但如果替换此代码的一部分,可以很容易地添加数据库连接)。请注意,我只是在学习PHP,所以请直接回答代码问题/缩进问题

为了实现这一点,谷歌必须在两个单独的文件中创建两个访问令牌

下面是YouTube分析生成器的示例(get_yt_access_token.php):

在这些函数中,请记住将clientid、Secret和RedirectUri设置为适用于您的服务器和Google API密钥的内容。此外,ViewID和ChannelID也被故意忽略

谷歌分析功能示例:

$viewId = "ga:xxxxxxx";

function OutboundClicksweek(){
  $client = new Google_Client();
  $client->setClientId('');
  $client->setClientSecret('');
  $client->setRedirectUri('URL/analytics.php');
  $client->setScopes('https://www.googleapis.com/auth/analytics.readonly');
  $client->setAccessToken(file_get_contents('refreshgatoken.conf'));
  $client->setUseObjects(true);
  $service = new Google_AnalyticsService($client);
  $start_date = $GLOBALS["start_date"];
  $end_date = new DateTime($start_date);
  $end_date->add(new DateInterval('P6D'));
  $end_date = $end_date->format('Y-m-d');
  $metrics = "ga:totalEvents";
  $dimensions = "ga:eventCategory";
  $filters = "ga:eventCategory=~Outbound Traffic";
  $optParams = array('dimensions' => $dimensions, 'filters' => $filters);
  $props = $GLOBALS["service"]->data_ga->get($GLOBALS["viewId"],$start_date,$end_date,$metrics,$optParams);
  $events=$props->totalsForAllResults['ga:totalEvents'];
  return $events;
  };  
$YTChannelID = "channel==xxxxxxxxx";

function YoutubeFacebookAnalytics(){
$client = new Google_Client();
$client->setClientId('');
$client->setClientSecret('');
$client->setRedirectUri('URL/analytics.php');
$client->setScopes(array('https://www.googleapis.com/auth/yt-analytics.readonly', 'https://www.googleapis.com/auth/youtube.readonly'));
$client->setAccessToken(file_get_contents('refreshyttoken.conf'));
$client->setUseObjects(true);
$service = new Google_YouTubeAnalyticsService($client);
  $start_date = $GLOBALS["start_date"];
  $end_date = new DateTime($start_date);
  $end_date->add(new DateInterval('P6D'));
  $end_date = $end_date->format('Y-m-d');
  $metrics = "views";
  $dimensions = "insightTrafficSourceDetail";
  $filters = "insightTrafficSourceType==EXT_URL";
  $max_results = "25";
  $sort = "-views";
  $optParams = array('dimensions' => $dimensions, 'filters' => $filters, 'max-results' => $max_results, 'sort' => $sort);
  $pages = $service->reports->query($GLOBALS['YTChannelID'], $start_date, $end_date, $metrics, $optParams);
  print_r($pages);
  };
YouTube功能示例:

$viewId = "ga:xxxxxxx";

function OutboundClicksweek(){
  $client = new Google_Client();
  $client->setClientId('');
  $client->setClientSecret('');
  $client->setRedirectUri('URL/analytics.php');
  $client->setScopes('https://www.googleapis.com/auth/analytics.readonly');
  $client->setAccessToken(file_get_contents('refreshgatoken.conf'));
  $client->setUseObjects(true);
  $service = new Google_AnalyticsService($client);
  $start_date = $GLOBALS["start_date"];
  $end_date = new DateTime($start_date);
  $end_date->add(new DateInterval('P6D'));
  $end_date = $end_date->format('Y-m-d');
  $metrics = "ga:totalEvents";
  $dimensions = "ga:eventCategory";
  $filters = "ga:eventCategory=~Outbound Traffic";
  $optParams = array('dimensions' => $dimensions, 'filters' => $filters);
  $props = $GLOBALS["service"]->data_ga->get($GLOBALS["viewId"],$start_date,$end_date,$metrics,$optParams);
  $events=$props->totalsForAllResults['ga:totalEvents'];
  return $events;
  };  
$YTChannelID = "channel==xxxxxxxxx";

function YoutubeFacebookAnalytics(){
$client = new Google_Client();
$client->setClientId('');
$client->setClientSecret('');
$client->setRedirectUri('URL/analytics.php');
$client->setScopes(array('https://www.googleapis.com/auth/yt-analytics.readonly', 'https://www.googleapis.com/auth/youtube.readonly'));
$client->setAccessToken(file_get_contents('refreshyttoken.conf'));
$client->setUseObjects(true);
$service = new Google_YouTubeAnalyticsService($client);
  $start_date = $GLOBALS["start_date"];
  $end_date = new DateTime($start_date);
  $end_date->add(new DateInterval('P6D'));
  $end_date = $end_date->format('Y-m-d');
  $metrics = "views";
  $dimensions = "insightTrafficSourceDetail";
  $filters = "insightTrafficSourceType==EXT_URL";
  $max_results = "25";
  $sort = "-views";
  $optParams = array('dimensions' => $dimensions, 'filters' => $filters, 'max-results' => $max_results, 'sort' => $sort);
  $pages = $service->reports->query($GLOBALS['YTChannelID'], $start_date, $end_date, $metrics, $optParams);
  print_r($pages);
  };
编码完成后,只需转到浏览器中的GetAccess令牌php文件并登录到相应的Google帐户。然后回到你原来的页面,你应该很乐意去

$YTChannelID = "channel==xxxxxxxxx";

function YoutubeFacebookAnalytics(){
$client = new Google_Client();
$client->setClientId('');
$client->setClientSecret('');
$client->setRedirectUri('URL/analytics.php');
$client->setScopes(array('https://www.googleapis.com/auth/yt-analytics.readonly', 'https://www.googleapis.com/auth/youtube.readonly'));
$client->setAccessToken(file_get_contents('refreshyttoken.conf'));
$client->setUseObjects(true);
$service = new Google_YouTubeAnalyticsService($client);
  $start_date = $GLOBALS["start_date"];
  $end_date = new DateTime($start_date);
  $end_date->add(new DateInterval('P6D'));
  $end_date = $end_date->format('Y-m-d');
  $metrics = "views";
  $dimensions = "insightTrafficSourceDetail";
  $filters = "insightTrafficSourceType==EXT_URL";
  $max_results = "25";
  $sort = "-views";
  $optParams = array('dimensions' => $dimensions, 'filters' => $filters, 'max-results' => $max_results, 'sort' => $sort);
  $pages = $service->reports->query($GLOBALS['YTChannelID'], $start_date, $end_date, $metrics, $optParams);
  print_r($pages);
  };