나는이 안내서를 완벽하게 따라 왔으며, 403 Insufficient Permission
을 계속 유지하면서 Google에서 약간의 정보를 다시 얻으려고 시도했습니다. https://developers.google.com/api-client-library/php/auth/service-accounts서버용 서버용 Google OAuth 2.0 사용 PHP
서비스 계정을 만들었으며 개인 키, 프로젝트 ID, 클라이언트 전자 메일 및 클라이언트 ID 및 스택 오버플로에서 공유 할 수없는 멋진 json 파일을 제공합니다.
그런 다음 서비스 계정에 도메인 전체 권한을 지정하여 특정 API 범위에 위임했습니다. https://www.googleapis.com/auth/analytics.readonly
Google Apps 도메인의 관리 콘솔을 통해이 작업을 수행했습니다.
나는 PHP의이 작은 비트로 인증 된 API 호출을 할 준비가되어있다.
<?php
require_once __DIR__ . '/vendor/autoload.php';
date_default_timezone_set('America/Los_Angeles');
$user_to_impersonate = '[email protected]';
putenv('GOOGLE_APPLICATION_CREDENTIALS=/Users/alexfallenstedt/Desktop/Code/sticky-dash/service-account.json');
$client = new Google_Client();
$client->useApplicationDefaultCredentials();
$client->setScopes(['https://www.googleapis.com/auth/analytics.readonly']);
$client->setSubject($user_to_impersonate);
$sqladmin = new Google_Service_SQLAdmin($client);
$response = $sqladmin->instances->listInstances('examinable-example-123')->getItems();
echo json_encode($response) . '\n';
?>
콘솔에서이 PHP 파일을 실행하는데이 오류가 계속 발생합니다.
Fatal error: Uncaught exception 'Google_Service_Exception' with message '{
"error": {
"errors": [
{
"domain": "global",
"reason": "insufficientPermissions",
"message": "Insufficient Permission"
}
],
"code": 403,
"message": "Insufficient Permission"
}
}
나는 분실했습니다. 내 팀 전체가 없어 졌어. 우리는 이것을 여러 번 통과했습니다. Google Analytics보고 API 데이터를 가져 오기 위해 서버 간 통신을 설정하려면 어떻게해야합니까?
인증 토큰이 표시되지 않습니다. 액세스 및 새로 고침 토큰을 얻었습니까? 그들은 사용자의 동의 후에 귀하에게 보내집니다. – Arbels
@Arbels 애플리케이션이 서비스 계정을 대신하여 Google API를 호출하므로 사용자가 직접 참여하지 않습니다. 이 2-legged o-auth 예제가 실패하는 단계는 응용 프로그램이 인증 된 API 호출을 준비 할 때입니다. 서비스 계정의 자격증 명을 사용하여 OAuth 2.0 인증 서버에서 액세스 토큰을 요청하고 있지만 권한 오류가 계속 발생합니다. 자격 증명은'$ client-> useApplicationDefaultCredentials();'에서 사용되는 환경 변수'putenv ('GOOGLE_APPLICATION_CREDENTIALS ...');에 저장됩니다. –
아, 가장 일반적인 [서버 측 앱] (https://developers.google.com/identity/protocols/OAuth2WebServer)을 언급했습니다. [앱 기본 자격증 명] (https://developers.google.com/identity/protocols/application-default-credentials) 접근 방법을 사용할 자격이 있습니까? – Arbels