Почему вы не получаете уведомления о подключении через Интернет?

Я пытаюсь использовать push-уведомление из Google Drive SDK для получения уведомлений обо всех изменениях в учетной записи, я следую инструкциям Регистрация домена, затем создаю канал уведомлений, и он работает, я получаю этот объект Google_Service_Drive_Channel от https://github.com/google/google-api-php-client:

$client = new Google_Client();
$client->setApplicationName("APP_NAME");
$service = new Google_Service_Drive($client);
$key = file_get_contents('my_private_key_location.p12');
$cred = new Google_Auth_AssertionCredentials(
  'email_address_from_the_client@developer.gserviceaccount.com',
  array('https://www.googleapis.com/auth/drive'),
  $key
);
$client->setAssertionCredentials($cred);


// Channel
$channel = new Google_Service_Drive_Channel();
$channel->setId(uniqid());
$channel->setAddress('https://my.custom.url');
$channel->setKind('api#channel');
$channel->setType('web_hook');
$test = $service->changes->watch($channel);
print_r($test);


// Response printing the result
Google_Service_Drive_Channel Object
(
    [address] => 
    [expiration] => 1407171497000
    [id] => xxxxxxxxxxxxxxxxxx
    [kind] => api#channel
    [params] => 
    [payload] => 
    [resourceId] => xxxxxxxxxxxxxxxxxxxx
    [resourceUri] => https://www.googleapis.com/drive/v2/changes?includeDeleted=true&includeSubscribed=true&maxResults=100&alt=json
    [token] => 
    [type] => 
    [modelData:protected] => Array
        (
        )

    [processed:protected] => Array
        (
        )

)

Итак, я захожу в учетную запись Google Drive для перемещения какого-либо файла, но я все еще не получаю ничего от webhook внутри указанного в параметре address адреса.

я получил X-Goog-Resource-State = sync заголовок только тогда, когда канал создан, но другие события, такие как (добавить, удалить, удалить, удалить, изменить), нет.

Любая помощь, спасибо

2 ответа

Я предполагаю, что редактируемая учетная запись Drive не связана с этой учетной записью службы, поскольку я не вижу, чтобы вы где-либо использовали подпараметр. Можете ли вы попробовать его с веб-интерфейсом OAuth 2.0 в качестве теста, чтобы убедиться, что он получает доступ к той же учетной записи Drive, что и изменяемая вами. Подробнее об этом см. В документе "Драйв" по ​​учетным записям приложений: https://developers.google.com/drive/web/service-accounts

Это было решением для моей ошибки. Передавайте полномочия на весь домен вашей учетной записи службы.

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