oauth - Google Analytics 如何使用服务器获取访问 token 到服务器 OAuth 使用 php

标签 oauth google-analytics

我正在尝试为 Google Analytics 数据创建一个仪表板,但我不知道如何组合这些脚本。

我必须像这样使用服务器到服务器身份验证 https://developers.google.com/analytics/devguides/config/mgmt/v3/quickstart/service-php但我无法为我的 Javascript 身份验证获取访问 token

gapi.analytics.auth.authorize({
   serverAuth: {
      access_token: >>How to get an Access token from PHP<<
   }
});

如果我只是做这样的事情

$KEY_FILE_LOCATION = __DIR__ . '/Service.json';
$client = new Google_Client();
$client->setApplicationName("Hello Analytics Reporting");
$client->setAuthConfig($KEY_FILE_LOCATION);
$client->setScopes(['https://www.googleapis.com/auth/analytics.readonly']);
var_dump($client->getAccessToken())

我的 getAccessToken 始终为 NULL 是否有任何其他方法可以通过服务器到服务器连接接收访问 token ?我必须找到不需要通过 Javascript 登录的方法,因为内容管理系统的所有后端用户都应该能够看到数据。

非常感谢。我是新手,如果你能解释一下它是如何工作的,而不仅仅是发送一个链接,那就太好了

编辑:换句话说,这是我的全部代码……为什么它不起作用,哪里出了问题?请帮助我

    <?php

// Load the Google API PHP Client Library.
require_once __DIR__ . '/vendor/autoload.php';

$accessToken = initializeAnalytics();

function initializeAnalytics()
{
  $KEY_FILE_LOCATION = __DIR__ . '/Service.json';

  $client = new Google_Client();
  $client->setApplicationName("Hello Analytics Reporting");
  $client->setAuthConfig($KEY_FILE_LOCATION);
  $client->setScopes(['https://www.googleapis.com/auth/analytics.readonly']);
  $accessToken = $client->getAccessToken();
  return $accessToken;
}

?>

<script>
    (function(w,d,s,g,js,fjs){
      g=w.gapi||(w.gapi={});g.analytics={q:[],ready:function(cb){this.q.push(cb)}};
      js=d.createElement(s);fjs=d.getElementsByTagName(s)[0];
      js.src='https://apis.google.com/js/platform.js';
      fjs.parentNode.insertBefore(js,fjs);js.onload=function(){g.load('analytics')};
    }(window,document,'script'));
</script>


<div id="chart-1-container"></div>

<script>
    gapi.analytics.ready(function() {
        gapi.analytics.auth.authorize({
          serverAuth: {
            access_token: '<?php echo $accessToken ?>'
          }
        });

        var dataChart = new gapi.analytics.googleCharts.DataChart({
            query: {
                ids: "ga:128053216",
                metrics: 'ga:sessions',
                dimensions: 'ga:date',
                'start-date': '30daysAgo',
                'end-date': 'yesterday',
            },
            chart: {
                container: 'chart-1-container',
                type: 'LINE',
            }
        });
        dataChart.execute();
    });
</script>

最佳答案

经过几天的尝试,终于找到了解决办法.... 它现在可以使用这个脚本

    <?php

// Load the Google API PHP Client Library.
require_once __DIR__ . '/vendor/autoload.php';

$accessToken = initializeAnalytics();

function initializeAnalytics()
{
  $KEY_FILE_LOCATION = __DIR__ . '/Service.json';

  $client = new Google_Client();
  $client->setApplicationName("Hello Analytics Reporting");
  $client->setAuthConfig($KEY_FILE_LOCATION);
  $client->setScopes(['https://www.googleapis.com/auth/analytics.readonly']);

  $client->refreshTokenWithAssertion();
  $token = $client->getAccessToken();
  $accessToken = $token['access_token'];

  return $accessToken;
}

?>

<script>
    (function(w,d,s,g,js,fjs){
      g=w.gapi||(w.gapi={});g.analytics={q:[],ready:function(cb){this.q.push(cb)}};
      js=d.createElement(s);fjs=d.getElementsByTagName(s)[0];
      js.src='https://apis.google.com/js/platform.js';
      fjs.parentNode.insertBefore(js,fjs);js.onload=function(){g.load('analytics')};
    }(window,document,'script'));
</script>


<div id="chart-1-container"></div>

<script>
    gapi.analytics.ready(function() {
        gapi.analytics.auth.authorize({
          serverAuth: {
            access_token: '<?php echo $accessToken ?>'
          }
        });

        var dataChart = new gapi.analytics.googleCharts.DataChart({
            query: {
                ids: ">your analytics ID<",
                metrics: 'ga:sessions',
                dimensions: 'ga:date',
                'start-date': '30daysAgo',
                'end-date': 'yesterday',
            },
            chart: {
                container: 'chart-1-container',
                type: 'LINE',
            }
        });
        dataChart.execute();
    });
</script>

关于oauth - Google Analytics 如何使用服务器获取访问 token 到服务器 OAuth 使用 php,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39770071/

相关文章:

asp.net-mvc - 带有 ASP.NET MVC 的 Twitter Oauth,在哪里存储 secret token

javascript - dataLayer.push后数据什么时候发送到google

Swift 身份验证质询 URLSession 从未调用

javascript - 如何在Node JS中使用Slack获取oAuth流程中的code参数?

ios - Google Analytics for iOS 不发送事件

firebase - 如何将离线转化数据导入 Firebase Analytics?

javascript - 谷歌分析 : _setSiteSpeedSampleRate generating two GIF requests

google-analytics - 有没有一种简单的方法可以跟踪页面链接在Google Analytics(分析)中的位置?

java - 无法更改 Spring 安全访问被拒绝的标准响应

java - 使用 OAuth token 进行 Spring Social 登录