简体   繁体   中英

Code connect to Google Analytics API with C# error

I trying using Google Analytics with C# to get stats information to display in my webiste Here is my code

      public ActionResult Index()
    {
        string userName = "admin@email.com";
        string passWord = "mypass";
        string profileId = "ga:xxxxxxxx";
        string key = "2d751338cb092ef8da65f716e37a48604386c9sw";
       string dataFeedUrl = "https://www.google.com/analytics/feeds/data"+key;

        var service = new AnalyticsService("API Project");

        service.setUserCredentials(userName, passWord);

        var dataQuery = new DataQuery(dataFeedUrl)
        {
            Ids = profileId,
            Metrics = "ga:pageviews",
            Sort = "ga:pageviews",
            GAStartDate = new DateTime(2010, 3, 1).ToString("yyyy-MM-dd"),
            GAEndDate = DateTime.Now.ToString("yyyy-MM-dd")
        };

        var dataFeed = service.Query(dataQuery);

        var totalEntry = dataFeed.Entries[0];

        ViewData["Total"] = ((DataEntry)(totalEntry)).Metrics[0].Value;

        dataQuery.GAStartDate = DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd");
        dataQuery.GAEndDate = DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd");
        dataFeed = service.Query(dataQuery);

        var yesterdayEntry = dataFeed.Entries[0];
        ViewData["Yesterday"] = ((DataEntry)(yesterdayEntry)).Metrics[0].Value;
        dataQuery.GAStartDate = DateTime.Now.ToString("yyyy-MM-dd");
        dataQuery.GAEndDate = DateTime.Now.ToString("yyyy-MM-dd");
        dataFeed = service.Query(dataQuery);

        var todayEntry = dataFeed.Entries[0];
        ViewData["Today"] = ((DataEntry)(todayEntry)).Metrics[0].Value;
        return View(dataFeed.Entries);
    }

But when i run the code it always said "{"Invalid credentials"}" Not sure why i facing this error while i checked many time about the key,username,password and profileId Anyone facing this problem,can help me? Many thanks

I think that your url is wrong. try in this way (you are missing ?key= ).

string dataFeedUrl = "https://www.google.com/analytics/feeds/data?key="+key;

refer this google example where there is this example that should help you

 public DataFeedExample()
    {

      // Configure GA API.
      AnalyticsService asv = new AnalyticsService("gaExportAPI_acctSample_v2.0");

      // Client Login Authorization.
      asv.setUserCredentials(CLIENT_USERNAME, CLIENT_PASS);

      // GA Data Feed query uri.
      String baseUrl = "https://www.google.com/analytics/feeds/data";

      DataQuery query = new DataQuery(baseUrl);
      query.Ids = TABLE_ID;
      query.Dimensions = "ga:source,ga:medium";
      query.Metrics = "ga:visits,ga:bounces";
      query.Segment = "gaid::-11";
      query.Filters = "ga:medium==referral";
      query.Sort = "-ga:visits";
      query.NumberToRetrieve = 5;
      query.GAStartDate = "2010-03-01";
      query.GAEndDate = "2010-03-15";
      Uri url = query.Uri;
      Console.WriteLine("URL: " + url.ToString());


      // Send our request to the Analytics API and wait for the results to
      // come back.

      feed = asv.Query(query);


    }

refer also this guide to configure your project

Also follow this guide to use OAuth 2.0

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM