Google API 401 Невалидни идентификационни данни

Опитвам се да използвам Oauth2 за достъп до данни от Анализ. Успешно получавам код за оторизация от и го променям за токен за оторизация. Но когато се опитам да получа някакви данни от API на Google Анализ, получавам грешка 401 Invalid Credentials.

Кодът, който използвам, е от PHP клиентска библиотека :

<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);

require_once 'lib/API/Google_Client.php';
require_once 'lib/API/contrib/Google_AnalyticsService.php';
session_start();

$client = new Google_Client();
$client->setApplicationName("APP name");

$client->setClientId('xxx.apps.googleusercontent.com');
$client->setClientSecret('mysecret');         
$client->setRedirectUri('http://example.com');
$client->setDeveloperKey('mykey');

$client->setScopes('https://www.googleapis.com/auth/analytics');

$service = new Google_AnalyticsService($client);

if (isset($_GET['logout'])) {
    session_destroy();
}

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));
}

if (isset($_SESSION['token'])) {
    $client->setAccessToken($_SESSION['token']);
//    $client->refreshToken('refresh-token');
    print_r(json_decode($_SESSION['token']));

    if ($client->isAccessTokenExpired()) {
        session_destroy();
        header('Location: http://example.com');
    }
}

if ($client->getAccessToken()) {
    $props = $service->management_webproperties->listManagementWebproperties("~all");
    print "<h1>Web Properties</h1><pre>" . print_r($props, true) . "</pre>";

    $accounts = $service->management_accounts->listManagementAccounts();
    print "<h1>Accounts</h1><pre>" . print_r($accounts, true) . "</pre>";

    $segments = $service->management_segments->listManagementSegments();
    print "<h1>Segments</h1><pre>" . print_r($segments, true) . "</pre>";

    $goals = $service->management_goals->listManagementGoals("~all", "~all", "~all");
    print "<h1>Segments</h1><pre>" . print_r($goals, true) . "</pre>";

    $_SESSION['token'] = $client->getAccessToken();
} else {
    $authUrl = $client->createAuthUrl();
    print "<a class='login' href='/bg$authUrl'>Connect Me!</a>";
}
?>

Проверих три пъти пълномощията си. Моят маркер за достъп изглежда по следния начин:

Object
(
    [access_token] => ya29.blablabla
    [token_type] => Bearer
    [expires_in] => 3600
    [refresh_token] => 1/Eblablabla
    [created] => 1413873721
)

Когато се опитвам да получа уеб свойства от акаунт в GA, получавам грешка 401:

    Google_ServiceException Object
(
    [errors:protected] => Array
        (
            [0] => Array
                (
                    [domain] => global
                    [reason] => authError
                    [message] => Invalid Credentials
                    [locationType] => header
                    [location] => Authorization
                )

        )

    [message:protected] => Error calling GET https://www.googleapis.com/analytics/v3/management/accounts/~all/webproperties?key=AIzaSyCDOiczVHVPiXhynaTkLkQ-Jp2Kr8kngS0: (401) Invalid Credentials
    [string:Exception:private] => 
    [code:protected] => 401
    [file:protected] => ...lib//API/io/Google_REST.php
    [line:protected] => 66
    [trace:Exception:private] => Array
        (
            [0] => Array
                (
                    [file] => .../lib/API/io/Google_REST.php
                    [line] => 36
                    [function] => decodeHttpResponse
                    [class] => Google_REST
                    [type] => ::
                    [args] => Array
                        (
                            [0] => Google_HttpRequest Object
                                (
                                    [batchHeaders:Google_HttpRequest:private] => Array
                                        (
                                            [Content-Type] => application/http
                                            [Content-Transfer-Encoding] => binary
                                            [MIME-Version] => 1.0
                                            [Content-Length] => 
                                        )

                                    [url:protected] => https://www.googleapis.com/analytics/v3/management/accounts/~all/webproperties?key=AIzaSyCDOiczVHVPiXhynaTkLkQ-Jp2Kr8kngS0
                                    [requestMethod:protected] => GET
                                    [requestHeaders:protected] => Array
                                        (
                                            [authorization] => Bearer ya29.xxx
                                        )

                                    [postBody:protected] => 
                                    [userAgent:protected] => APP name google-api-php-client/0.6.5
                                    [responseHttpCode:protected] => 401
                                    [responseHeaders:protected] => Array
                                        (
                                            [vary] => Origin
Referer
X-Origin
                                            [www-authenticate] => Bearer realm="https://accounts.google.com/AuthSubRequest", error=invalid_token
                                            [content-type] => application/json; charset=UTF-8
                                            [date] => Tue, 21 Oct 2014 14:00:46 GMT
                                            [expires] => Tue, 21 Oct 2014 14:00:46 GMT
                                            [cache-control] => private, max-age=0
                                            [x-content-type-options] => nosniff
                                            [x-frame-options] => SAMEORIGIN
                                            [x-xss-protection] => 1; mode=block
                                            [server] => GSE
                                            [alternate-protocol] => 443:quic,p=0.01
                                            [transfer-encoding] => chunked
                                        )

                                    [responseBody:protected] => {"error":{"errors":[{"domain":"global","reason":"authError","message":"Invalid Credentials","locationType":"header","location":"Authorization"}],"code":401,"message":"Invalid Credentials"}}
                                    [accessKey] => 
                                )

                        )

                )

            [1] => Array
                (
                    [file] => .../lib/API/service/Google_ServiceResource.php
                    [line] => 186
                    [function] => execute
                    [class] => Google_REST
                    [type] => ::
                    [args] => Array
                        (
                            [0] => Google_HttpRequest Object
                                (
                                    [batchHeaders:Google_HttpRequest:private] => Array
                                        (
                                            [Content-Type] => application/http
                                            [Content-Transfer-Encoding] => binary
                                            [MIME-Version] => 1.0
                                            [Content-Length] => 
                                        )

                                    [url:protected] => https://www.googleapis.com/analytics/v3/management/accounts/~all/webproperties?key=AIzaSyCDOiczVHVPiXhynaTkLkQ-Jp2Kr8kngS0
                                    [requestMethod:protected] => GET
                                    [requestHeaders:protected] => Array
                                        (
                                            [authorization] => Bearer ya29.xxx
                                        )

                                    [postBody:protected] => 
                                    [userAgent:protected] => APP name google-api-php-client/0.6.5
                                    [responseHttpCode:protected] => 401
                                    [responseHeaders:protected] => Array
                                        (
                                            [vary] => Origin
Referer
X-Origin
                                            [www-authenticate] => Bearer realm="https://accounts.google.com/AuthSubRequest", error=invalid_token
                                            [content-type] => application/json; charset=UTF-8
                                            [date] => Tue, 21 Oct 2014 14:00:46 GMT
                                            [expires] => Tue, 21 Oct 2014 14:00:46 GMT
                                            [cache-control] => private, max-age=0
                                            [x-content-type-options] => nosniff
                                            [x-frame-options] => SAMEORIGIN
                                            [x-xss-protection] => 1; mode=block
                                            [server] => GSE
                                            [alternate-protocol] => 443:quic,p=0.01
                                            [transfer-encoding] => chunked
                                        )

                                    [responseBody:protected] => {"error":{"errors":[{"domain":"global","reason":"authError","message":"Invalid Credentials","locationType":"header","location":"Authorization"}],"code":401,"message":"Invalid Credentials"}}
                                    [accessKey] => 
                                )

                        )

                )

            [2] => Array
                (
                    [file] => .../lib/API/contrib/Google_AnalyticsService.php
                    [line] => 1010
                    [function] => __call
                    [class] => Google_ServiceResource
                    [type] => ->
                    [args] => Array
                        (
                            [0] => list
                            [1] => Array
                                (
                                    [0] => Array
                                        (
                                            [accountId] => ~all
                                        )

                                )

                        )

                )

            [3] => Array
                (
                    [file] => .../oatuhCallback.php
                    [line] => 46
                    [function] => listManagementWebproperties
                    [class] => Google_ManagementWebpropertiesServiceResource
                    [type] => ->
                    [args] => Array
                        (
                            [0] => ~all
                        )

                )

        )

    [previous:Exception:private] => 
)

какво правя грешно


person Lukan    schedule 21.10.2014    source източник


Отговори (1)


Самият аз намерих отговор.

Когато използвате API на Google, вие ВИНАГИ трябва да създадете публичен ключ за достъп, който ви дава ключ на разработчика. Това е вашият правилен ключ за разработчици. Следвах инструкции от някакъв форум и получих грешни указания за получаване на моя ключ за програмист.

За съжаление това не се споменава в инструкциите за интегриране на Google OAuth.

person Lukan    schedule 22.10.2014
comment
Бихте ли предоставили достъп до форума, където сте научили как се прави това? - person tixastronauta; 11.02.2016
comment
Можете ли да дадете по-подробни инструкции? - person Luiz Mitidiero; 31.01.2017