Как получить данные 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.

http://code.google.com/p/google-gdata/source/browse/trunk/clients/cs/samples/Analytics_DataFeed_Sample/dataFeed.cs

// 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
Другие вопросы по тегам