Клиент не авторизован для получения маркеров доступа с использованием этого метода, или клиент не авторизован для какой-либо из запрошенных областей - PullRequest
2 голосов
/ 24 апреля 2019

Можете ли вы помочь мне с этим?

Я использую PHP GOOGLE API V2.2.2

Мой код работает с использованием созданной для него учетной записи gserviceaccount, НО, когда я пытаюсь манипулировать файлами в моем личном GOOGLE DRIVE, у меня появляется эта ошибка ...

Я попытался выполнить следующие шаги: Github, выпуск 801

Все прошло хорошо, и мой проект показан в моем списке авторизованных клиентов

Вот мой код для создания папки на моем диске Google:

  function NovaPasta() {


    require_once APPPATH . 'third_party/google-api-php-client-2.2.2/vendor/autoload.php';

    putenv('GOOGLE_APPLICATION_CREDENTIALS='. APPPATH . 'third_party/google-api-php-client-2.2.2/Asist-428f3540df9a.json');
    $client = new Google_Client();
    $client->useApplicationDefaultCredentials();
    //$client->setAuthConfig(APPPATH . 'third_party/google-api-php-client-2.2.2/Asist-428f3540df9a.json');
    $client->addScope("https://www.googleapis.com/auth/drive");
    $client->setSubject('xxxx@gmail.com');

    $driveService = new Google_Service_Drive($client);

    $fileMetadata = new Google_Service_Drive_DriveFile(array(
        'name' => 'new folder name',
        'mimeType' => 'application/vnd.google-apps.folder'));
    $file = $driveService->files->create($fileMetadata, array(
        'fields' => 'id'));
    printf("Folder ID: %s\n", $file->id);
}

Вот ошибка:

Обнаружено неперехваченное исключение Тип: Google_Service_Exception

Сообщение: {"error": "unauthorized_client", "error_description": "Клиент не авторизован для получения маркеров доступа с использованием этого метода, или клиент не авторизован для какой-либо из запрошенных областей." }

enter image description here

1 Ответ

0 голосов
/ 28 апреля 2019

Если вы хотите использовать служебную учетную запись, тогда раскомментируйте $ client-> setAuthConfig, указав на файл json, и удалите строку $ client-> useApplicationDefaultCredentials ();

. См. Еще пример на https://github.com/googleapis/google-api-php-client/tree/master/examples

$client = new Google_Client();
$client->setAuthConfig('service-account.json');
$client->setScopes(['https://www.googleapis.com/auth/drive']);
$service = new Google_Service_Drive($client);
$fileMetadata = new Google_Service_Drive_DriveFile(array('name' => 'Google_Service_Folder','mimeType' => 'application/vnd.google-apps.folder'));
$file = $service->files->create($fileMetadata, array('fields' => 'id'));
...