Как использовать Google Analytics API с двухсторонним OAuth (Google Apps для бизнеса)? - PullRequest
4 голосов
/ 24 сентября 2011

Я хочу разработать приложение для бизнеса, в котором я работаю. Мы используем Google Apps и хотим получить данные из Google Analytics и показать их в одном из наших веб-приложений. Я не хочу, чтобы клиент видел запрос на авторизацию приложения. Я хочу использовать OAuth с двумя ножками, например http://www.google.com/support/a/bin/answer.py?hl=en&answer=162105, но Google Analytics отсутствует в списке. Я все еще смогу использовать это? Поддерживается ли он в .NET API данных Google Library или Google API .NET Client ?

РЕДАКТ. 1 :

Используя Google API .NET Client , я придумал что-то, что должно работать в моем понимании:

var auth = new Google.Apis.Authentication.OAuth2LeggedAuthenticator(DOMAIN_CONSUMER_KEY, DOMAIN_CONSUMER_SECRET, USER_TO_IMPERSONATE, DOMAIN);

var service = new Google.Apis.Analytics.v3.AnalyticsService(auth);

service.Key = DEV_KEY_FROM_API_CONSOLE;

var _request = service.Management.Accounts.List();

foreach (var item in _request.Fetch().Items)
{
    Console.WriteLine(item.Name);
}

... но я получаю эту ошибку:

Google.Apis.Requests.RequestError 
InvalidCredentials [401]
Errors [
    Message[Invalid Credentials] 
    Location[Authorization - header] 
    Reason[authError] 
    Domain[global]
    ]

Спасибо

Ответы [ 3 ]

3 голосов
/ 10 июля 2012

Этот пост в блоге объясняет шаг за шагом, как реализовать двухстороннюю аутентификацию с клиентом Google API .Net.

http://bittwiddlers.org/?p=212#awp::?p=212

Однако, автор заканчивает свой пост этим комментарием:

Приведенная выше информация, относящаяся к проекту google-api-dotnet-client, актуальна, но эта библиотека теряет память как сито и снижает производительность, если вы пытаетесь выполнить какую-либо асинхронную работу или используете 2LO (от имени нескольких пользователей). ).

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

1 голос
/ 08 февраля 2012

Я ответил на аналогичный вопрос здесь .Это ответит, как решить пару проблем, которые вызовут 401 Invalid Credentials, и может помочь вам заставить работать версию .Net API v3.Я просто добавляю это здесь, поскольку ваше решение использует устаревший API версии 2, чтобы обойти проблему, с которой вы столкнулись при аутентификации.

0 голосов
/ 11 ноября 2011

Я нашел метод, использующий библиотеку .NET для API данных Google . Я нашел эту ссылку благодаря этому парню . Вот рабочий код, который перечисляет все учетные записи Google Analytics, учитывая, что GOOGLE_APPS_DOMAIN_SECRET - это ключ, генерируемый с использованием этого метода , DOMAIN - это домен Служб Google, а имя пользователя - это префикс (например,: firstname. фамилия ") электронного письма от пользователя Google Apps, которого мы хотим выдать себя (например, администратора, чтобы иметь доступ ко всему):

        var requestFactory = new GOAuthRequestFactory("an", "Any app name");
        requestFactory.ConsumerKey = DOMAIN;
        requestFactory.ConsumerSecret = GOOGLE_APPS_DOMAIN_SECRET;

        var service = new AnalyticsService("Any app name");
        service.RequestFactory = requestFactory;

        var query = new AccountQuery();
        query.OAuthRequestorId = username + "@" + DOMAIN;

        var serviceQuery = service.Query(query);

        foreach (AccountEntry Entry in serviceQuery.Entries)
        {
            WriteLine(Entry.Title.Text);
        }

Единственная проблема в том, что я должен выдавать себя за пользователя и не могу просто иметь доступ ко всему.

РЕДАКТИРОВАТЬ: Метод устарел

...