Google api 谷歌分析和网站管理员api的起点

Google api 谷歌分析和网站管理员api的起点,google-api,google-analytics-api,google-oauth,google-webmaster-tools,Google Api,Google Analytics Api,Google Oauth,Google Webmaster Tools,我的谷歌分析账户中有大约50个网站。 我想做一些研究,创建通知系统,并将分析数据与其他来源的数据进行比较 这意味着我想每天两次为每个站点获取一打报告。我解析它们并存储在mysql中。最简单的方法是什么 我注册了一个应用程序,并在其中打开了分析api,但没有网站管理员api。我对oAuth也没有一个清晰的理解。是否有一种方法可以避免每次重定向和请求新的访问令牌?这有点像从我的ip为我的帐户中的应用程序授予永久访问权限,而无需进一步确认 那么,对于初学者来说,有没有关于从分析和网站管理员那里检索用p

我的谷歌分析账户中有大约50个网站。 我想做一些研究,创建通知系统,并将分析数据与其他来源的数据进行比较

这意味着我想每天两次为每个站点获取一打报告。我解析它们并存储在mysql中。最简单的方法是什么

我注册了一个应用程序,并在其中打开了分析api,但没有网站管理员api。我对oAuth也没有一个清晰的理解。是否有一种方法可以避免每次重定向和请求新的访问令牌?这有点像从我的ip为我的帐户中的应用程序授予永久访问权限,而无需进一步确认


那么,对于初学者来说,有没有关于从分析和网站管理员那里检索用php、perl或ruby编写的数据的好教程?

以下代码将帮助您使用oauth流的脱机访问检索“刷新令牌”。 您可以使用此刷新令牌来获取访问令牌,而不会打扰用户

确保您在API控制台中提到的重定向Uri应该与您将在其中放置以下代码的文件名相同

例如。 如果重定向uri为:- 然后应该将以下脚本放在:-google_oauth.php(路径:)


OAuth2授权码
授权代码:

访问令牌:

到期日:

刷新令牌:

获得刷新令牌后,您可以使用以下代码从google analytics获取数据:-

<?php
$refresh_token='#refresh-token';
$fields_string = "client_id=#ClientId&client_secret=#clientSecret&refresh_token=$refresh_token&grant_type=refresh_token";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://accounts.google.com/o/oauth2/token');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, count($fields));
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields_string);
$token_response = curl_exec($ch);
$json_obj = json_decode($token_response);
$access_token = $json_obj->access_token;
curl_close($ch);



$url = "https://www.googleapis.com/analytics/v3/data/ga?ids=ga:30566906&start-date=2013-01-01&end-date=2013-04-16&dimensions=ga:medium&metrics=ga:visits,ga:bounces";
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Authorization: Bearer $access_token"));
curl_setopt($ch, CURLOPT_URL, html_entity_decode($url));
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
$output = curl_exec($ch);
$json_obj = json_decode($output);
$test=$json_obj->columnHeaders;
foreach($test as $a){
    var_dump($a);

}
curl_close($ch);
?>

在以上脚本中:-

#clientId和#clientSecret应替换为注册web应用程序时收到的客户端id和客户端密码。

对于您的用例,我建议使用需要人工确认的OAuth流,而不是OAuth流

有几种语言可以使OAuth部分更简单。例如,在中包含一个示例脚本,显示Google Analytics API。本质上是这样的:

@client = Google::APIClient.new(
  :application_name => opts['application_name'],
  :application_version => opts['application_version'])

## Load our credentials for the service account
key = Google::APIClient::KeyUtils.load_from_pkcs12(key_file, key_secret)

@client.authorization = Signet::OAuth2::Client.new(
  :token_credential_uri => 'https://accounts.google.com/o/oauth2/token',
  :audience => 'https://accounts.google.com/o/oauth2/token',
  :scope => 'https://www.googleapis.com/auth/analytics.readonly',
  :issuer => service_account_email,
  :signing_key => key)

## Request a token for our service account
@client.authorization.fetch_access_token!

query_data = @client.execute(:api_method => @analytics.data.ga.get, :parameters => {
    'ids' => "ga:" + @profileID,
    'start-date' => @startDate,
    'end-date' => @endDate,
    'dimensions' => dimension,
    'metrics' => metric,
    'sort' => sort
  })

虽然它没有访问查询数据的权限,但存在一个。你可以通过谷歌发布的这个或通过。

你肯定会使用谷歌分析API。对于oAuth框架,您应该保留“刷新令牌”。此令牌可用于获取新的短期(60分钟)“访问令牌”。我认为你不必关心注册你的申请;如果您要求其他人访问您的Google Analytics,则可以使用此选项。若要添加到@MSchenkel,尽管oauth流程中需要重定向,但一旦您的用户批准了您的应用程序,重定向将不可见,因为它会重定向回您的应用程序。您还可以授予脱机访问权限,在这种情况下,您将获得一个可存储的刷新令牌,您可以脱机使用该令牌来获取访问令牌,而不会打扰用户。您的代码正在运行,但可以在脚本命令行上运行并生成访问令牌吗?
@client = Google::APIClient.new(
  :application_name => opts['application_name'],
  :application_version => opts['application_version'])

## Load our credentials for the service account
key = Google::APIClient::KeyUtils.load_from_pkcs12(key_file, key_secret)

@client.authorization = Signet::OAuth2::Client.new(
  :token_credential_uri => 'https://accounts.google.com/o/oauth2/token',
  :audience => 'https://accounts.google.com/o/oauth2/token',
  :scope => 'https://www.googleapis.com/auth/analytics.readonly',
  :issuer => service_account_email,
  :signing_key => key)

## Request a token for our service account
@client.authorization.fetch_access_token!

query_data = @client.execute(:api_method => @analytics.data.ga.get, :parameters => {
    'ids' => "ga:" + @profileID,
    'start-date' => @startDate,
    'end-date' => @endDate,
    'dimensions' => dimension,
    'metrics' => metric,
    'sort' => sort
  })