ほんの数日前にうまく機能していたコードで GoogleAnalytics API からデータを取得しようとしているときに、問題に直面しています。
このために、次の DLL を参照しています。
Google.GData.Analytics.dll
Google.GData.Client.dll
Google.GData.Extensions.dll
そして、私は次のコードを使用しています:
Dim visits As String = String.Empty
Dim username As String = "myuser@mydomain.com"
Dim pass As String = "mypassword"
Const dataFeedUrl As String = "https://www.google.com/analytics/feeds/data"
Dim query As AccountQuery = New AccountQuery()
Dim service As AnalyticsService = New AnalyticsService("MyWebAnalyticsService")
service.setUserCredentials(username, pass)
Dim accountFeed As AccountFeed = service.Query(query) ''----------> Exception thrown in this line: GDataRequestException Execution of request failed: https://www.google.com/analytics/feeds/accounts/default
私が使用していたアカウントへのブロックに関係していると思っていましたが、別の分析アカウントにサイトを登録していることを確認したため、そうではありませんでしたが、まだ機能していません.
私が言ったように、このコードは問題なく動作していましたが、昨日突然動作しなくなりました。
何が問題なのかを理解するのを手伝ってもらえますか? ユーザー資格情報の設定方法が変更され、何か不足している可能性があります。
ご助力ありがとうございます。
' ----更新---- どうにかして機能させることができ、目的のドメインへの訪問を照会できるようになりました。コードは次のようになります。
Dim visits As String = String.Empty
Dim username As String = "myuser@mydomain.com"
Dim pass As String = "mypassword"
' https://developers.google.com/analytics/resources/articles/gdata-migration-guide (Google API コンソールでプロジェクトを作成する)の指示に従ってキーを生成します。 GA サービスをリクエストするためのクエリ文字列
Dim gkey As String = "key=yourkeystring"
'新しい URI を設定してフィード データを取得し、生成されたキーに追加します
Dim dataFeedUrl As String = "https://www.google.com/analytics/feeds/data?" & gkey
'サービス インスタンスの作成と認証
Dim service As AnalyticsService = New AnalyticsService("MyAnaliticsService")
service.setUserCredentials(username, pass)
'この訪問を取得したいアカウントのプロファイル ID を使用し
ます。分析アカウントにログインし、リスト (青いリンク) で目的のドメインを選択します。[管理者] ボタンをクリックし、[プロファイル] タブで、 profile
'configuration サブタブ、そこにプロファイル ID が表示されます。この場合、8 文字の ID 12345678 です。
Dim query1 As DataQuery = New DataQuery(dataFeedUrl)
With query1
.Ids = "ga:12345678"
.Metrics = "ga:visits"
.Sort = "ga:visits"
.GAStartDate = DateTime.Now.AddMonths(-1).AddDays(-2).ToString("yyyy-MM-dd")
.GAEndDate = DateTime.Now.ToString("yyyy-MM-dd")
.StartIndex = 1
End With
'以前のクエリに基づいて生成されたデータフィードを使用して、訪問を取得します
Dim dataFeedVisits As DataFeed = service.Query(query1)
For Each entry As DataEntry In dataFeedVisits.Entries
Dim st As String = entry.Title.Text
Dim ss As String = entry.Metrics(0).Value
visits = ss
Next