Ошибка разрешения Google Meet REST API для ресурса «Пространство» (или оно может не существовать)

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

"Call failed with message: { "message": "Permission denied on resource Space (or it might not exist)", "code": 7, "status": "PERMISSION_DENIED", "details": [] }"

<?php

namespace App\Http\Controllers\Panel;

use App\Http\Controllers\Controller;
use Google\ApiCore\ApiException;
use Google\ApiCore\ValidationException;
use Google\Apps\Meet\V2\Client\SpacesServiceClient;
use Google\Apps\Meet\V2\CreateSpaceRequest;
use Google\Apps\Meet\V2\Space;

class YourControllerName extends Controller
{
    public function __construct()
    {

    }

    /**
     * @throws ValidationException
     */
    public function index()
    {
        $spacesServiceClient  = new SpacesServiceClient([
            'credentials' => storage_path('app\google-calendar\credentials.json')
        ]);

        $request = new CreateSpaceRequest();

        try {
            $response = $spacesServiceClient->createSpace($request);
            printf('Response data: %s' . PHP_EOL, $response->serializeToJsonString());
        } catch (ApiException $ex) {
            printf('Call failed with message: %s' . PHP_EOL, $ex->getMessage());
        }
    

Как вы предоставили доступ к учетной записи службы?

Linda Lawton - DaImTo 26.04.2024 14:16

@LindaLawton-DaImTo 1 – я зашел в облачную консоль Google 2 – поискал Google Met Rest API 3 – щелкнул и включил его 4 – из левого меню я перешел на страницу учетных данных 5 – нажал кнопку создания учетных данных вверху и выбрал сервисный аккаунт 6 - для доступа к учетной записи я выбрал роль владельца, так как не смог найти ничего особенного для Google, отвечающего API 7, - затем закончил и установил ключ в формате JSON.

Eren Sertkaya 26.04.2024 14:38

Да, но Google встречает пространство, не у всех есть доступ к этому новому созданному пространству, нужно ли их туда приглашать

Linda Lawton - DaImTo 26.04.2024 14:51

Вы имеете в виду, что мне нужно добавить приглашение в свой код?

Eren Sertkaya 26.04.2024 15:02

Сервисный аккаунт — это не вы. Думайте об этом как о фиктивном пользователе. Он может получить доступ только к тому, к чему у него есть доступ. Я не смогу получить доступ к этому Пространству, пока вы не предоставите мне доступ к нему. Вам также необходимо предоставить доступ к учетной записи службы.

Linda Lawton - DaImTo 26.04.2024 15:10

как ? есть ли роль или разрешение на предоставление учетной записи службы, чтобы он мог получить доступ к созданным пространствам? Существует множество ролей и разрешений, но я не вижу ничего, связанного с Google Meetings?

Eren Sertkaya 26.04.2024 16:33

Как вы создали пространство? это было через Google Workspace?

Linda Lawton - DaImTo 26.04.2024 16:51

Я только что попробовал использовать стандартное пространство Gmail, но не могу пригласить учетную запись службы.

Linda Lawton - DaImTo 26.04.2024 16:58

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

Eren Sertkaya 26.04.2024 21:02

Вы можете настроить это только из домена Google Workspace.

Linda Lawton - DaImTo 26.04.2024 23:29

я создал учетную запись рабочей области с доменом и добавил учетную запись службы для делегирования всего домена с указанными областями oauth, но все равно получаю ту же ошибку

Eren Sertkaya 27.04.2024 23:45

Могу ли я увидеть код, который вы использовали для делегирования?

Linda Lawton - DaImTo 28.04.2024 09:07

Как и в моем посте, я ничего не менял, нужно ли что-то конкретное в коде для делегирования всего домена, я не слышал об этом

Eren Sertkaya 28.04.2024 13:50

Я думаю, вам следует задать вопрос в google-cloud-php возможно, они смогут вам помочь. Я никогда не слышал о делегировании рабочей области с помощью облачной библиотеки Google.

Linda Lawton - DaImTo 28.04.2024 17:50

проблема решена, большое спасибо github.com/googleapis/google-cloud-php/issues/7257

Eren Sertkaya 29.04.2024 22:46

вы должны ответить на свой вопрос.

Linda Lawton - DaImTo 30.04.2024 07:43
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
16
457
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

после настройки делегирования всего домена и других связанных конфигураций в облачной консоли Google этот код работал у меня

public function index(){
     $credentials = (new ServiceAccountCredentials(['https://www.googleapis.com/auth/meetings.space.readonly','https://www.googleapis.com/auth/meetings.space.created']
         ,base_path("key.json"),
         '[email protected]'
     ));
    // Create a client.
    $spacesServiceClient = new SpacesServiceClient(['credentials' => $credentials]);

    // Prepare the request message.
    $request = new CreateSpaceRequest();

    // Call the API and handle any network failures.
    try {
        /** @var Space $response */
        $response = $spacesServiceClient->createSpace($request);
        printf('Response data: %s' . PHP_EOL, $response->serializeToJsonString());
    } catch (ApiException $ex) {
        printf('Call failed with message: %s' . PHP_EOL, $ex->getMessage());
    }
}

Что такое «Другие связанные конфигурации в Google Cloud Console»? Можете ли вы поделиться дополнительной информацией?

Anton Kryukov 08.07.2024 15:02

Другие вопросы по теме