Google Analytics PHP API — ошибка (403) доступ не настроен

Я гуглил это уже несколько часов. Я следил за руководством по Hello Analytics.

Приложение работает нормально, пока пользователь не предоставил разрешение на «экране согласия» Google, после чего я получаю следующую ошибку:

Возникла общая ошибка: Ошибка при вызове GET Мой URL (403) Доступ не настроен. Пожалуйста, используйте Google Developers Console, чтобы активировать API для вашего проекта.

Я проверил в консоли разработчика, и Analytics API включен, и, прочитав другие сообщения об этом, добавил доступ к Google+ и Диску.

ПРИМЕЧАНИЕ. Я запускаю это приложение локально и перенаправляю перенаправление обратно на 127.0.0.1.

Я добавил свой код ниже для справки, хотя я думаю, что проблема связана с моей учетной записью консоли Google и/или запуском этого приложения локально.

Ценю любую помощь с этими ребятами. Пожалуйста, дайте мне знать, если потребуется дополнительная информация.

==================================================================================

// --------------------- Google libraries

require_once 'google-api-php-client/src/Google_Client.php';
require_once 'google-api-php-client/src/contrib/Google_AnalyticsService.php';

session_start();

// --------------------- Application credentials

$client = new Google_Client();
$client->setApplicationName('Interim Testing Tool');
$client->setClientId('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.apps.googleusercontent.com');
$client->setClientSecret('xxxxxxxxxxxxxxxxxxxxxxxx');
$client->setRedirectUri('http://127.0.0.1');
$client->setDeveloperKey('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx');
$client->setScopes(array('https://www.googleapis.com/auth/analytics.readonly'));

// Returns objects from the Analytics Service instead of associative arrays.
$client->setUseObjects(true);

// --------------------- Client access checks

// Handle authorization flow from the server
if (isset($_GET['code'])) {
    $client->authenticate();
    $_SESSION['token'] = $client->getAccessToken();
    $redirect = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'];
    header('Location: ' . filter_var($redirect, FILTER_SANITIZE_URL));
}

// Retrieve and use stored credentials if set
if (isset($_SESSION['token'])) {
    $client->setAccessToken($_SESSION['token']);
}

if (!$client->getAccessToken()) {
    // CLient not logged in create a connect button
    $authUrl = $client->createAuthUrl();
    print "<a class='login' href='$authUrl'>Connect Me!</a>";
} else {
    $analytics = new Google_AnalyticsService($client);
    runMainDemo($analytics);
}

//------------------------------------------------ -------------- Запустить основную демонстрацию

function runMainDemo($analytics) {
    try {
        // Get the user's first view (profile) ID.
        $profileId = getFirstProfileId($analytics);
        if (isset($profileId)) {
            // Query the Core Reporting API.
            $results = getResults($analytics, $profileId);
            // Output the results.
            printResults($results);
        }
    } catch (apiServiceException $e) {
        // Error from the API.
        print 'There was an API error : ' . $e->getCode() . ' : ' . $e->getMessage();
    } catch (Exception $e) {
        print 'There wan a general error : ' . $e->getMessage();
    }
}

// ------------------------------------------------ ------------------ Получить идентификатор первого профиля

function getFirstprofileId($analytics) {
    $accounts = $analytics->management_accounts->listManagementAccounts();

    if (count($accounts->getItems()) > 0) {
        $items = $accounts->getItems();
        $firstAccountId = $items[0]->getId();

        $webproperties = $analytics->management_webproperties->listManagementWebproperties($firstAccountId);

        if (count($webproperties->getItems()) > 0) {
            $items = $webproperties->getItems();
            $firstWebpropertyId = $items[0]->getId();
            $profiles = $analytics->management_profiles->listManagementProfiles($firstAccountId, $firstWebpropertyId);

            if (count($profiles->getItems()) > 0) {
                $items = $profiles->getItems();
                return $items[0]->getId();
            } else {
            throw new Exception('No views (profiles) found for this user.');
            }
        } else {
            throw new Exception('No webproperties found for this user.');
        }
    } else {
        throw new Exception('No accounts found for this user.');
    }
}

person nickspiel    schedule 10.01.2014    source источник
comment
Была ли это какая-то помощь? groups.google.com/forum/#!topic/google- API перевода/   -  person brandonscript    schedule 11.01.2014
comment
Попробую включить выставление счетов и отчитаюсь (я буду очень недоволен Google, если это так: P).   -  person nickspiel    schedule 11.01.2014
comment
Это случалось со мной раньше ... даже если это бесплатно, все ваши данные принадлежат Google.   -  person brandonscript    schedule 11.01.2014
comment
Хорошо, я включил биллинг и удалил своих рефереров, поэтому теперь разрешен любой реферер. Любые другие идеи? Нужно ли мне что-то делать с моим IP?   -  person nickspiel    schedule 11.01.2014
comment
Любопытно, важны ли там биты о том, что локальный IP-адрес не совпадает с общедоступным IP-адресом - посмотрите, можете ли вы заставить его отправлять с вашего внешнего IP-адреса?   -  person brandonscript    schedule 11.01.2014
comment
Да, возможно. Я попробую это поздно, пусть сегодня, когда я снова буду за своим компьютером. Я также попытаюсь загрузить его на свой сервер и протестировать оттуда, если он недоволен всем локальным. Спасибо за ваши предложения. Я скоро сообщу.   -  person nickspiel    schedule 11.01.2014
comment
Итак, похоже, что время действительно лечит все. Я вернулся к этому, и теперь он работает, так что это могло быть что-то из того, что мы пробовали :(.   -  person nickspiel    schedule 21.01.2014
comment
Сумасшедший! Хорошо рад, что это работает для вас.   -  person brandonscript    schedule 21.01.2014