Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Google Analytics API 3 - Error:"invalid_grant", Description:"", Uri:""

I've 'googled' the life out of this issue today with zero resolve!

I am trying to build a very simple Google Analytics data request console app using a Service account. I have set up all the required details in the Google Developers Console but I am getting the following error:

An unhandled exception of type 'Google.Apis.Auth.OAuth2.Responses.TokenResponseException'          
occurred in Google.Apis.dll

Additional information: Error:"invalid_grant", Description:"", Uri:""

Below is the code in my console app (with keys hidden):

using System.Security.Cryptography.X509Certificates;
using Google.Apis.Auth.OAuth2;
using Google.Apis.Services;
using Google.Apis.Analytics;
using Google.Apis.Analytics.v3;
using Google.Apis.Analytics.v3.Data;
using System;

namespace GoogleAnalyticsAPI
{

public class Program
{

    public static void Main(string[] args)
    {

        string profileId = "12345678";
        string serviceAccountEmail = "[email protected]";
        X509Certificate2 certificate = new X509Certificate2(@"PrivateKey.p12", "mypassword", X509KeyStorageFlags.Exportable);

        // Create credentials
        ServiceAccountCredential credential = new ServiceAccountCredential(
           new ServiceAccountCredential.Initializer(serviceAccountEmail)
           {
               Scopes = new[] { AnalyticsService.Scope.Analytics }
           }.FromCertificate(certificate));

        // Create the service
        var service = new AnalyticsService(new BaseClientService.Initializer()
        {
            HttpClientInitializer = credential,
            ApplicationName = "Google Analytics API"

        });

        string startDate = "2014-07-01";
        string endDate = "2010-07-31";


        DataResource.GaResource.GetRequest request = service.Data.Ga.Get(string.Format("ga:{0}", profileId), startDate, endDate, "ga:visits, ga:newVisits");
        request.Dimensions = "ga:city";
        GaData data = request.Execute();

    }

}
}

Any help here would be greatly appreciated!

Note, here are some sources I've followed:

Tutorial Followed to get above code

Useful but out of date

Google's code walk through - not in C# .Net

like image 265
Matt D. Webb Avatar asked May 16 '26 07:05

Matt D. Webb


1 Answers

It turns out I had the wrong credentials, if anyone else has the same problem:

  1. Double check you're using the service account email ending "@developer.gserviceaccount.com"
  2. Check the downloaded .p12 file is located in your debug folder and you supply the correct private key password (given to you when you create your service account).
like image 142
Matt D. Webb Avatar answered May 18 '26 21:05

Matt D. Webb



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!