OAuth 2.0 with Google Analytics API v3

前端 未结 5 1882
南旧
南旧 2020-12-02 11:53

I used to be able to query the Google Analytics API with my account\'s login & password. Google is now using OAuth for authentication which is great... The only issue is

5条回答
  •  刺人心
    刺人心 (楼主)
    2020-12-02 11:55

    I'm adding a PHP answer - you may be able to adjust or convert it to garb / ruby code.

    You should be able to use Analytics with service accounts now. You will indeed have to use a private key instead of an access token.

    Create an app in the API Console
    Basically, you go to the Google API Console and create an App.
    Enable Google Analytics in the services tab.
    In the API Access tab, create a new OAuth ID (Create another client ID... button), select service account and download your private key (Generate new key... link). You'll have to upload the key to your web server later.

    On the API Access page, in the Service account section, copy the email address (@developer.gserviceaccount.com) and add a new user with this email address to your Google Analytics profile. If you do not do this, you'll get some nice errors

    Code
    Download the latest Google PHP Client off SVN (from the command line svn checkout http://google-api-php-client.googlecode.com/svn/trunk/ google-api-php-client-read-only).

    You can now access the Analytics API in code:

    require_once 'Google_Client.php';              
    require_once 'contrib/Google_AnalyticsService.php';
    
    $keyfile = 'dsdfdss0sdfsdsdfsdf44923dfs9023-privatekey.p12';
    
    // Initialise the Google Client object
    $client = new Google_Client();
    $client->setApplicationName('Your product name');
    
    $client->setAssertionCredentials(
        new Google_AssertionCredentials(
            '11122233344@developer.gserviceaccount.com',
            array('https://www.googleapis.com/auth/analytics.readonly'),
            file_get_contents($keyfile)
        )
    );
    
    // Get this from the Google Console, API Access page
    $client->setClientId('11122233344.apps.googleusercontent.com');
    $client->setAccessType('offline_access');
    $analytics = new Google_AnalyticsService($client);
    
    // We have finished setting up the connection,
    // now get some data and output the number of visits this week.
    
    // Your analytics profile id. (Admin -> Profile Settings -> Profile ID)
    $analytics_id   = 'ga:1234';
    $lastWeek       = date('Y-m-d', strtotime('-1 week'));
    $today          = date('Y-m-d');
    
    try {
        $results = $analytics->data_ga->get($analytics_id,
                            $lastWeek,
                            $today,'ga:visits');
        echo 'Number of visits this week: ';
        echo $results['totalsForAllResults']['ga:visits'];
    } catch(Exception $e) {
        echo 'There was an error : - ' . $e->getMessage();
    }
    

提交回复
热议问题