0

Windows サービスまたはコンソール アプリを介して Google アナリティクス データを取得するサービスを作成しようとしています。

何を試しても、oAuth を使用してアプリを承認できません

私はこのようなことができます

 var analyticsService = new AnalyticsService("MyApp");
 const string baseUrl = "https://www.google.com/analytics/feeds/data";

 var dataQuery = new DataQuery(baseUrl);

 dataQuery.Ids = TableId;
 dataQuery.Dimensions = "ga:pagePath,ga:date";
 dataQuery.Metrics = "ga:avgTimeOnPage,ga:pageviews,ga:uniquePageviews";
 dataQuery.Sort = "ga:date";
 dataQuery.GAStartDate = "2012-03-01";
 dataQuery.GAEndDate = "2012-04-15";

 Feed = analyticsService.Query(dataQuery);

アカウントのユーザー名/パスワードで GDataCredentials を使用すると、これは正常に機能します。これでは 1 日 200 件しかリクエストできないという印象を受けました。50Kのリクエストを許可するためにoAuthで動作させる方法のサンプルコードについて、本当に助けが必要です。ここで完全に壁にぶち当たります。

明確にするために:

サイト用に 1 つの Google アナリティクス アカウントを持っています。私は常にその 1 つのアカウントから引き出します。低い API 制限に達することなく、それを行う最も簡単な方法は何ですか?

よろしくお願いします!

4

2 に答える 2

1

さらに調査した結果、私が探しているオプションはサービス アカウントのようですが、Google アナリティクスでは (まだ?) 利用できません。

https://developers.google.com/accounts/docs/OAuth2ServiceAccount

于 2012-04-16T19:23:42.663 に答える
0

答えはここにあります。

原作者からの引用:

機能させるには、 http://www.dotnetopenauth.net/の DotNetOpenAuth と http://code.google.com/p/google-gdata/の gdataが必要です 。

DotNetOpenAuth には、必要な OAuthConsumer という名前のサンプル プロジェクトがあります。これを変更して、Analytics の承認を要求します。

GoogleConsumer.RequestAuthorization(google, GoogleConsumer.Applications.Analytics);

これにより、トークンとトークンシークレットが取得されます。次のように使用できます。

    GOAuthRequestFactory requestFactory = new GOAuthRequestFactory("cp", TokenManager.ConsumerKey); //ConsumerKey actually is the name of web application
    requestFactory.ConsumerKey = TokenManager.ConsumerKey;
    requestFactory.ConsumerSecret = TokenManager.ConsumerSecret;
    requestFactory.Token = AccessToken;
    requestFactory.TokenSecret = TokenManager.GetTokenSecret(AccessToken);
    requestFactory.UseSSL = true;
    AnalyticsService service = new AnalyticsService(requestFactory.ApplicationName); // acually the same as ConsumerKey
    service.RequestFactory = requestFactory;

    const string dataFeedUrl = "https://www.google.com/analytics/feeds/data";

    DataQuery query1 = new DataQuery(dataFeedUrl);
于 2012-04-16T06:29:48.297 に答える