Я только что настроил все в облачной консоли 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());
}
@LindaLawton-DaImTo 1 – я зашел в облачную консоль Google 2 – поискал Google Met Rest API 3 – щелкнул и включил его 4 – из левого меню я перешел на страницу учетных данных 5 – нажал кнопку создания учетных данных вверху и выбрал сервисный аккаунт 6 - для доступа к учетной записи я выбрал роль владельца, так как не смог найти ничего особенного для Google, отвечающего API 7, - затем закончил и установил ключ в формате JSON.
Да, но Google встречает пространство, не у всех есть доступ к этому новому созданному пространству, нужно ли их туда приглашать
Вы имеете в виду, что мне нужно добавить приглашение в свой код?
Сервисный аккаунт — это не вы. Думайте об этом как о фиктивном пользователе. Он может получить доступ только к тому, к чему у него есть доступ. Я не смогу получить доступ к этому Пространству, пока вы не предоставите мне доступ к нему. Вам также необходимо предоставить доступ к учетной записи службы.
как ? есть ли роль или разрешение на предоставление учетной записи службы, чтобы он мог получить доступ к созданным пространствам? Существует множество ролей и разрешений, но я не вижу ничего, связанного с Google Meetings?
Как вы создали пространство? это было через Google Workspace?
Я только что попробовал использовать стандартное пространство Gmail, но не могу пригласить учетную запись службы.
Я думаю, мне нужно делегирование всего домена для доступа к таким вещам, как календарь, встречи, из служебной учетной записи
Вы можете настроить это только из домена Google Workspace.
я создал учетную запись рабочей области с доменом и добавил учетную запись службы для делегирования всего домена с указанными областями oauth, но все равно получаю ту же ошибку
Могу ли я увидеть код, который вы использовали для делегирования?
Как и в моем посте, я ничего не менял, нужно ли что-то конкретное в коде для делегирования всего домена, я не слышал об этом
Я думаю, вам следует задать вопрос в google-cloud-php возможно, они смогут вам помочь. Я никогда не слышал о делегировании рабочей области с помощью облачной библиотеки Google.
проблема решена, большое спасибо github.com/googleapis/google-cloud-php/issues/7257
вы должны ответить на свой вопрос.
после настройки делегирования всего домена и других связанных конфигураций в облачной консоли 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»? Можете ли вы поделиться дополнительной информацией?
Как вы предоставили доступ к учетной записи службы?