为什么我无法使用此代码列出我的所有帐户?

时间:2015-07-27 13:21:13

标签: c#-4.0 google-analytics google-analytics-api

这是我第一次涉足Google Analytics。我创建了一个服务帐户,并从开发人员控制台下载了p12文件。 此代码有效,但方式不完整。

我有两个帐户,但下面的代码只返回列表中的一个帐户。 如何列出我的所有帐户?

 private static ServiceAccountCredential Run2()
    {
        const string keyfilePath = "file.p12";
        const string serviceAccountMail = "notarealemailaddress@developer.gserviceaccount.com";
        var certificate = new X509Certificate2(keyfilePath, "notasecret", X509KeyStorageFlags.Exportable);
        var credential = new ServiceAccountCredential(new ServiceAccountCredential.Initializer(serviceAccountMail)
        {
            Scopes = new[] { AnalyticsService.Scope.Analytics, AnalyticsService.Scope.AnalyticsReadonly, AnalyticsService.Scope.AnalyticsProvision }
        }.FromCertificate(certificate));
        return credential;
    }
    static void Main()
    {
        var cr = Run2();
        var service = new AnalyticsService(new BaseClientService.Initializer()
        {
            HttpClientInitializer = cr,
            ApplicationName = "Analytics API Sample"
        });

        var request = service.Management.Accounts.List();
        request.MaxResults = 20;
        var result = request.Execute();
        foreach (var item in result.Items)
        {
            Console.WriteLine("Account Name: {0} {1} {2}", item.Name, item.Kind, item.Id);
        }
    }

2 个答案:

答案 0 :(得分:2)

这就是我最终要做的事情。 Google创建的服务帐户需要添加到您需要访问的每个帐户。我从阅读文档中想到了这一点。

https://developers.google.com/analytics/devguides/config/mgmt/v3/quickstart/service-py

google analytics help

Add Service Account

答案 1 :(得分:0)

试试这个

ManagementResource.AccountSummariesResource.ListRequest list = service.Management.AccountSummaries.List();
  list.MaxResults = 1000;  // Maximum number of Account Summaries to return per request. 

  AccountSummaries feed = list.Execute();
  List allRows = new List();

  //// Loop through until we arrive at an empty page
  while (feed.Items != null)
   {
   allRows.AddRange(feed.Items);

   // We will know we are on the last page when the next page token is
   // null.
   // If this is the case, break.
   if (feed.NextLink == null)
   {
       break;
    }

   // Prepare the next page of results             
   list.StartIndex = feed.StartIndex + list.MaxResults;
   // Execute and process the next page request
   feed = list.Execute();

 }

 feed.Items = allRows; 

//Get account summary and display them.
foreach (AccountSummary account in feed.Items)
     {
      // Account
      Console.WriteLine("Account: " + account.Name + "(" + account.Id + ")");
      foreach (WebPropertySummary wp in account.WebProperties)
        {
         // Web Properties within that account
         Console.WriteLine("\tWeb Property: " + wp.Name + "(" + wp.Id + ")");

         //Don't forget to check its not null. Believe it or not it could be.
         if (wp.Profiles != null)
           {
            foreach (ProfileSummary profile in wp.Profiles)
              {
              // Profiles with in that web property.
              Console.WriteLine("\t\tProfile: " + profile.Name + "(" + profile.Id + ")");
              }
         }
       }
     }

参考:http://www.daimto.com/googleanalytics-management-csharp/ http://www.daimto.com/googleAnalytics-authentication-csharp/