OAuth 2.0 с API Google Analytics v3

Раньше я имел возможность запрашивать API Google Analytics с именем и паролем моей учетной записи. Google теперь использует OAuth для аутентификации, что отлично … Единственная проблема в том, что мне нужен только один токен доступа. Я не хочу, чтобы другие пользователи могли получать данные аналитической информации THEIR.

Я просто хочу получить МОИ данные. Есть ли способ создать токен доступа только для моего приложения или моей учетной записи analytics?

Я знаю, что такие решения существуют … Например, Twitter предоставляет то, что они называют «однопользовательским oauth» для приложений, для которых не требуется, чтобы какой-либо пользователь мог войти в систему.

Еще раз, все, что я пытаюсь сделать, это получить мои аналитические данные через API.

Есть ли способ правильно это сделать?

Я добавляю ответ PHP – вы можете настроить или преобразовать его в код garb / ruby.

Теперь вы сможете использовать Analytics с учетными записями служб. Вам действительно придется использовать закрытый ключ вместо токена доступа.

Создание приложения в консоли API
В основном, вы заходите в консоль Google API и создаете приложение.
Включите Google Analytics на вкладке «Сервисы».
На вкладке API Access создайте новый идентификатор OAuth ID (Создать другой идентификатор клиента …), выберите учетную запись службы и загрузите свой секретный ключ (Создать новый ключ …). Вам придется загрузить ключ на свой веб-сервер позже.

На странице «Доступ к API» в разделе «Учетная запись службы» скопируйте адрес электронной почты (@ developer.gserviceaccount.com) и добавьте нового пользователя с этим адресом электронной почты в свой профиль Google Analytics. Если вы этого не сделаете, вы получите некоторые хорошие ошибки

Код
Загрузите последнюю версию Google PHP Client из SVN (из командной строки svn checkout http://google-api-php-client.googlecode.com/svn/trunk/ google-api-php-client-read-only ).

Теперь вы можете обратиться к API Google Analytics:

 require_once 'Google_Client.php'; require_once 'contrib/Google_AnalyticsService.php'; $keyfile = 'dsdfdss0sdfsdsdfsdf44923dfs9023-privatekey.p12'; // Initialise the Google Client object $client = new Google_Client(); $client->setApplicationName('Your product name'); $client->setAssertionCredentials( new Google_AssertionCredentials( '[email protected]', array('https://www.googleapis.com/auth/analytics.readonly'), file_get_contents($keyfile) ) ); // Get this from the Google Console, API Access page $client->setClientId('11122233344.apps.googleusercontent.com'); $client->setAccessType('offline_access'); $analytics = new Google_AnalyticsService($client); // We have finished setting up the connection, // now get some data and output the number of visits this week. // Your analytics profile id. (Admin -> Profile Settings -> Profile ID) $analytics_id = 'ga:1234'; $lastWeek = date('Ym-d', strtotime('-1 week')); $today = date('Ym-d'); try { $results = $analytics->data_ga->get($analytics_id, $lastWeek, $today,'ga:visits'); echo 'Number of visits this week: '; echo $results['totalsForAllResults']['ga:visits']; } catch(Exception $e) { echo 'There was an error : - ' . $e->getMessage(); } 

Терри Сейдлер очень хорошо ответил на php. Я хочу добавить пример кода Java .

Настройка консоли Api

Начните с выполнения необходимых шагов в консоли google api, как объяснил Терри:

В основном, вы заходите в консоль Google API и создаете приложение. Включите Google Analytics на вкладке «Сервисы». На вкладке API Access создайте новый идентификатор OAuth ID (Создать другой идентификатор клиента …), выберите учетную запись службы и загрузите свой секретный ключ (Создать новый ключ …). Вам придется загрузить ключ на свой веб-сервер позже. На странице «Доступ к API» в разделе «Учетная запись службы» скопируйте адрес электронной почты (@ developer.gserviceaccount.com) и добавьте нового пользователя с этим адресом электронной почты в свой профиль Google Analytics. Если вы этого не сделаете, вы получите некоторые хорошие ошибки

Получить необходимые библиотеки

Загрузите java-клиент google analytics с помощью: https://developers.google.com/api-client-library/java/apis/analytics/v3

Или добавьте следующие зависимости maven:

   com.google.apis google-api-services-analytics v3-rev94-1.18.0-rc   com.google.http-client google-http-client-jackson 1.18.0-rc  

Теперь для кода:

 public class HellowAnalyticsV3Api { private static final HttpTransport HTTP_TRANSPORT = new NetHttpTransport(); private static final JsonFactory JSON_FACTORY = new JacksonFactory(); public void analyticsExample() { // This is the .p12 file you got from the google api console by clicking generate new key File analyticsKeyFile = new File(); // This is the service account email address that you can find in the api console String apiEmail = ; GoogleCredential credential = new GoogleCredential.Builder() .setTransport(HTTP_TRANSPORT) .setJsonFactory(JSON_FACTORY) .setServiceAccountId(apiEmail) .setServiceAccountScopes(Arrays.asList(AnalyticsScopes.ANALYTICS_READONLY)) .setServiceAccountPrivateKeyFromP12File(analyticsPrivateKeyFile).build(); Analytics analyticsService = new Analytics.Builder(HTTP_TRANSPORT, JSON_FACTORY, credential) .setApplicationName() .build(); String startDate = "2014-01-03"; String endDate = "2014-03-03"; String mertrics = "ga:sessions,ga:timeOnPage"; // Use the analytics object build a query Get get = analyticsService.data().ga().get(tableId, startDate, endDate, mertrics); get.setDimensions("ga:city"); get.setFilters("ga:country==Canada"); get.setSort("-ga:sessions"); // Run the query GaData data = get.execute(); // Do something with the data if (data.getRows() != null) { for (List row : data.getRows()) { System.out.println(row); } } } 

Вы можете использовать токен обновления. Сохраните токен обновления в файле db или secure config, затем используйте его, чтобы показать статистику.

Автономный API Google API с использованием OAuth 2.0 Refresh Token даст вам представление о том, как захватить, а затем сохраните токен обновления.

См. Также Использование OAuth 2.0 для приложений веб-сервера – автономный доступ

Привет, я нашел решение, оно работает для меня

вы должны изменить это

 immediate: true 

в

 immediate: false 

и похоже

 function checkAuth() { gapi.auth.authorize({ client_id: clientId, scope: scopes, immediate: false}, handleAuthResult); } 

У Google есть «Учетная запись службы» (вызывается API Google от имени вашего приложения, а не конечного пользователя), но способ, которым он работает, немного отличается, поскольку вместо этого он не будет использовать токены доступа, кроме закрытого ключа.

Более подробную информацию вы найдете на странице https://developers.google.com/accounts/docs/OAuth2ServiceAccount

  • OAuth 2.0: Преимущества и варианты использования - почему?
  • Паспортные области Laravel
  • Oauth 2.0 авторизация для LinkedIn в Android
  • Какова цель неявного типа авторизации гранта в OAuth 2?
  • Как OAuth 2 отличается от OAuth 1?
  • Аутентификация с помощью OAuth2 для приложения * и * веб-сайта
  • Получить идентификатор приложения из токена доступа пользователя (или проверить исходное приложение для токена)
  • Регистрация внешних интерфейсов Web API 2 из нескольких клиентов API с идентификацией OWIN
  • Ток состояния CSRF не соответствует одному предоставленному FB PHP SDK 3.1.1 Oauth 2.0
  • Как получить отпечаток сертификата подписчика (SHA1) для OAuth 2.0 на Android?
  • Почему API календаря Google (oauth2) отвечает «Недостаточное разрешение»?
  • Давайте будем гением компьютера.