Подтвердить что ты не робот

OAuth 2.0 с API Google Analytics v3

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

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

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

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

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

4b9b3361

Ответ 1

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

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

Создать приложение в консоли API
В основном, вы заходите в консоль Google API и создаете приложение.
Включите Google Analytics на вкладке "Сервисы".
На вкладке "Доступ к API" создайте новый идентификатор 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('Y-m-d', strtotime('-1 week'));
$today          = date('Y-m-d');

try {
    $results = $analytics->data_ga->get($analytics_id,
                        $lastWeek,
                        $today,'ga:visits');
    echo '<b>Number of visits this week:</b> ';
    echo $results['totalsForAllResults']['ga:visits'];
} catch(Exception $e) {
    echo 'There was an error : - ' . $e->getMessage();
}

Ответ 2

Terry Seidler ответил на это хорошо для php. Я хочу добавить пример кода java.

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

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

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

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

Загрузите java-клиент google analytics из: https://developers.google.com/api-client-library/java/apis/analytics/v3

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

    <dependency>
        <groupId>com.google.apis</groupId>
        <artifactId>google-api-services-analytics</artifactId>
        <version>v3-rev94-1.18.0-rc</version>
    </dependency>
    <dependency>
        <groupId>com.google.http-client</groupId>
        <artifactId>google-http-client-jackson</artifactId>
        <version>1.18.0-rc</version>
    </dependency>

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

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(<p12FilePath>);

    // This is the service account email address that you can find in the api console
    String apiEmail = <[email protected]>;

    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(<your application name>)
        .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<String> row : data.getRows()) {
            System.out.println(row);
        }
    }

}

Ответ 3

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

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

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

Ответ 4

Здравствуйте, я нашел решение, оно работает для меня

вам нужно изменить этот

immediate: true 

to

immediate: false

и он выглядит как

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

Ответ 5

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

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