Я пытаюсь получить данные через бэкэнд php, используя js-библиотеку Google API.
На первом шаге пользователь авторизует приложение через OAuth во внешнем интерфейсе
const scopes = [
'https://www.googleapis.com/auth/analytics',
'https://www.googleapis.com/auth/analytics.readonly',
'https://www.googleapis.com/auth/analytics.edit',
]
gapi.load('client:auth2', () => {
this.gaAuth = gapi.auth2.init({
client_id: '965399848242-skdqgktduruufpqtcuhvm9oqlpk21qq4.apps.googleusercontent.com',
scope: scopes.join(' ')
}).grantOfflineAccess().then(
success => {
// send and save authorization code to server/database
},
error => {
});
});
Теперь я хочуполучить данные аналитики через php, используя код авторизации, который будет получен из внешнего интерфейса (см. код ниже)
$googleClient = new Google_Client();
$googleClient->setAuthConfig(storage_path('google/client_secret.json'));
$googleClient->fetchAccessTokenWithAuthCode($authorizationCodeFromFrontend);
$googleClient->setScopes([
'https://www.googleapis.com/auth/analytics.readonly',
'https://www.googleapis.com/auth/analytics.edit',
'https://www.googleapis.com/auth/analytics'
]);
$analyticsClient = new Google_Service_Analytics($googleClient);
return response()->json($analyticsClient
->management_accounts
->listManagementAccounts()
->getItems());
Но я получаю следующую ошибку:
{"error":{"errors":[{"domain":"global","reason":"required","message":"Login Required","locationType":"header","location":"Authorization"}],"code":401,"message":"Login Required"}}
Редактировать: после некоторой отладки яувидел, что я получаю ошибку от fetchAccessTokenWithAuthCode метод:
'error' => 'invalid_grant',
'error_description' => 'Bad Request',