Как получить данные Google Analytics, используя OAuth?
Ребята, мы разрабатываем систему, которая предоставит пользователям доступ к Google Analytics. Я пытаюсь реализовать это таким образом, чтобы пользователю не нужно было вводить свои учетные данные для входа в Google на нашем сайте, поэтому пытаюсь заставить его работать, используя свою учетную запись.
У меня есть решение, которое получает аналитику, используя электронную почту и пароль пользователя. Я ищу решение, которое не требует электронной почты и пароля пользователя, но не может найти ничего.
Как это можно сделать? любые советы или ссылки будут оценены.
Спасибо
4 ответа
Хорошо, ребята, после нескольких дней борьбы я наконец понял это. В Интернете нет документации, и люди, которые делали это раньше, не хотели делиться своим успехом по какой-то причине. Я нашел эту дискуссию, которая помогла мне.
Чтобы это работало, вам понадобится DotNetOpenAuth
с http://www.dotnetopenauth.net/ и gdata
со http://code.google.com/p/google-gdata/
так
using DotNetOpenAuth.ApplicationBlock;
using DotNetOpenAuth.OAuth;
using Google.GData.Client;
using Google.GData.Analytics;
В DotNetOpenAuth есть пример проекта с именем OAuthConsumer, который вам нужен. Измените его на требуемую авторизацию для Google 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);
Этот сервис вы можете использовать как здесь или здесь
И последнее, вы не сможете попробовать его на localhost
поэтому вам понадобится домен, который ДОЛЖЕН быть зарегистрирован в Google здесь, чтобы получить ключ и секретный ключ пользователя.
Существует класс.NET/C# для аутентификации данных Google, который можно использовать для доступа к API экспорта данных Google Analytics (поскольку этот API является частью стандарта Google Data, хотя вам может потребоваться внести определенные изменения в Google Analytics.)*
Для проверки подлинности лучше всего создавать зарегистрированное приложение Google, поскольку это позволяет выполнять проверку подлинности без предупреждений безопасности (и, в этом отношении, нарушений безопасности).
Существует три формы поддерживаемой аутентификации; "безопасными" / не имеющими паролей являются OAuth и AuthSub (что является проприетарной версией Google OAuth); версия с жестко заданным именем пользователя и паролем называется Google как "ClientLogin" и не считается безопасной или идеальной для многопользовательских приложений.
* (Так как вы отметили вопрос .net C#)
Изменить: Подробнее об использовании AuthSub или OAuth с библиотекой.NET:
AuthSubSupport: http://code.google.com/p/google-gdata/wiki/AuthSubSupport
Примеры кода о том, как использовать библиотеки для аутентификации OAuth: http://code.google.com/apis/gdata/docs/auth/oauth.html (перейдите на вкладку.NET).
Основы работы с OAuth здесь: http://code.google.com/apis/accounts/docs/OpenID.html
Аутентификация с помощью OAuth: http://code.google.com/apis/accounts/docs/OAuth.html
После того как вы аутентифицируете пользователя с помощью OAuth, у вас будет токен запроса, который работает так же, как и тот, который вы получаете от API входа Google. Оттуда он должен совпадать с именем пользователя / паролем.
I don't think you need to mess with OAuth.
The google analytics api lets you pass credentials. Just start from this data feed example.
// Configure GA API and do client login Authorization.
AnalyticsService asv = new AnalyticsService("gaExportAPI_acctSample_v2.0");
asv.setUserCredentials(clientUser, clientPass);
Загрузите клиентскую библиотеку здесь
http://code.google.com/apis/analytics/docs/gdata/gdataLibraries.html
Чтобы получить представление о запросах данных, поиграйте с этим, а затем скопируйте значения в приведенный выше пример.
http://code.google.com/apis/analytics/docs/gdata/gdataExplorer.html