Как удалить сообщение, отправленное Webhook, в чате Google Hangouts

Я следил за входящим ботом python, чтобы отправить сообщение с помощью веб-перехватчика, и я хотите удалить его с помощью Method:delete.

Но я получаю сообщение об ошибке 401 и следующее сообщение об ошибке.

{'error': {'code': 401,
           'message': 'Request is missing required authentication credential. '
                      'Expected OAuth 2 access token, login cookie or other '
                      'valid authentication credential. See '
                      'https://developers.google.com/identity/sign-in/web/devconsole-project.',
           'status': 'UNAUTHENTICATED'}}

Webhook использует ключ и токен для авторизации. Но я не могу удалить сообщение с тем же URL-адресом (с целевым «идентификатором данных»).


person Chao    schedule 28.05.2019    source источник
comment
У меня та же проблема, но я хочу обновить сообщение, которое было отправлено через вебхук! Я получаю ту же ошибку: 401.   -  person Evgeny Vostok    schedule 29.05.2019


Ответы (2)


Вы, должно быть, скачали файл учетных данных. Если нет, следуйте этому.

После загрузки выполните следующие шаги, чтобы сгенерировать токен аутентификации.

  1. Установите переменную среды

    экспортировать GOOGLE_APPLICATION_CREDENTIALS=

  2. Запустите эту команду на своем терминале.

    gcloud auth application-print-access-token по умолчанию

  3. Используйте сгенерированный токен в вашем почтальоне -> Авторизация -> Тип OAuth 2.0 -> Токен доступа ИЛИ В ваших заголовках как

    заголовки = { 'Content-Type': "application/json", 'Авторизация': "Bearer", ... }

person Yog    schedule 23.01.2020

Невозможно удалить сообщения, отправленные через Webhook в чате Google Hangouts, или, по крайней мере, эта функция еще не встроена.

Если вы размещаете сообщение в комнате или отправляете кому-то ЛС через сам код Appscript проекта (без использования Webhook, т.е. через spaces.messages.create), то его можно удалить с помощью этого метода spaces.messages.delete (проверьте здесь)

Если вы попытаетесь использовать вышеуказанный метод (spaces.messages.delete) для удаления сообщения, опубликованного с помощью Webhook, вы получите следующую ошибку.

{
    "error": {
        "code": 403,
        "message": "Request had insufficient authentication scopes.",
        "status": "PERMISSION_DENIED"
    }
}

Это связано с тем, что сообщение, которое вы пытаетесь удалить, было опубликовано с помощью веб-перехватчика, а не через базу кода приложения или с использованием spaces.messages.create, и, таким образом, сгенерированный токен доступа не имеет права удалять сообщение, поскольку оно принадлежит проекту приложения, а не вебхук бот.

Надеюсь, это прояснит ваш вопрос!

person IncyWincyRz    schedule 16.11.2020
comment
Я не думаю, что в ОП что-то упоминается о скриптах приложений. Я предполагаю, что на данный момент нет способа удалить сообщения веб-перехватчика. - person idontknow; 20.11.2020
comment
В нем упоминается использование кода Python для достижения той же функциональности, которую я сделал с помощью AppScript. Нет никакой разницы, правда. - person IncyWincyRz; 27.11.2020