Исключение при использовании GData .NET Analytics API

Я столкнулся с проблемой при попытке извлечь данные из API GoogleAnalytics для фрагмента кода, который хорошо работал всего пару дней назад.

Для этого я ссылаюсь на следующие библиотеки 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 (создать проект в консоли API Google), чтобы сгенерировать свой ключ". После того, как он будет установлен как часть Строка запроса для запроса нашего сервиса 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)  

"Используйте идентификатор профиля для учетной записи, с которой вы хотите получать эти посещения, вы можете найти его
'войдя в свою учетную запись Google Analytics, выберите нужный домен в списке (синяя ссылка), нажмите кнопку администратора и на вкладке профилей найдите профиль.
'Конфигурационная вложенная вкладка, здесь вы найдете идентификатор профиля, в этом случае идентификатор длиной восемь символов 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

2 ответа

Решение

У меня та же проблема, и, похоже, Google недавно отключил канал. Ответ дан в другом посте. Ошибка com.google.gdata.util.ResourceNotFoundException: не найдено с помощью Google Analytic.

Убедитесь, что вы зарегистрировали свой проект в консоли API и отправляете ключ API вместе со своими запросами.

Если это не проблема, проверка внутреннего исключения даст вам более подробную информацию об ошибке. В качестве альтернативы вы можете использовать Fiddler для захвата HTTP-запроса и ответа. Последний будет содержать более описательное сообщение об ошибке.

Другие вопросы по тегам