Программное использование делегированных разрешений в Graph ApiPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Программное использование делегированных разрешений в Graph Api

Сообщение Anonymous »

Согласно документу MS Graphapi, разрешение ChannelMessage.Send доступно только для делегированных и недоступно в качестве разрешения приложения.
Поскольку нам нужно использовать делегированное разрешение для отправки сообщения командам MS , поэтому мы должны сначала пройти аутентификацию пользователя, чтобы использовать GraphAPI для отправки сообщения в канал команды. Я пытаюсь добиться этого программно, ниже приведен фрагмент кода

Код: Выделить всё

from azure.identity import ClientSecretCredential
from msgraph import GraphServiceClient
from msgraph.generated.models.chat_message import ChatMessage
from msgraph.generated.models.item_body import ItemBody

#from azure.identity import DeviceCodeCredential
import os
import asyncio

client_id = os.environ["clientid"]
client_secret = os.environ["clientsecret"]
tenant_id = os.environ["tenenatid"]

credential = ClientSecretCredential(
tenant_id=tenant_id,
client_id=client_id,
client_secret=client_secret,
)
async def send_message():
scopes = ['https://graph.microsoft.com/.default']
client = GraphServiceClient(credentials=credential, scopes=scopes)
print(client)

request_body = ChatMessage(
body = ItemBody(
content = "Hello World",
),
)
channel_id = os.environ["channel_id"]
team_id = os.environ["team_id"]
result =  await client.teams.by_team_id(team_id).channels.by_channel_id(channel_id).messages.post(request_body)
if result:
print(result)

if __name__ == "__main__":
asyncio.run(send_message())
Если я использую ClientSecretCredential для учетных данных, выдается ошибка

Код: Выделить всё

msgraph.generated.models.o_data_errors.o_data_error.ODataError:
APIError
Code: 401
message: None
error: MainError(additional_data={}, code='Unauthorized', details=None, inner_error=InnerError(additional_data={}, client_request_id='xxxxxx-412e-4493-xxxx-ccd3667dxxxx', date=DateTime(2024, 9, 20, 10, 58, 16, tzinfo=Timezone('UTC')), odata_type=None, request_id='xxxxxx-da73-4457-xxxx-ee9ea940xxxx'), message='Message POST is allowed in application-only context only for import purposes. Refer to https://docs.microsoft.com/microsoftteams/platform/graph-api/import-messages/import-external-messages-to-teams for more details.', target=None)
Если я использую DeviceCodeCredential для учетных данных, он попросит войти в систему, с помощью веб-браузера откройте страницу https://microsoft.com/devicelogin и введите код XXXXXX для аутентификации. После аутентификации отправка сообщения в команды прошла успешно.
Мне нужна ваша помощь, как я могу отправить сообщение в канал команды программным способом без входа в браузер.

Подробнее здесь: https://stackoverflow.com/questions/790 ... n-graphapi
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как вы тестируете делегированных слушателей с помощью JQuery, JSDOM и Jest?
    Anonymous » » в форуме Jquery
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • Как создать промежуточное программное обеспечение для проверки разрешений пользователя в Django?
    Anonymous » » в форуме Python
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous
  • Программное назначение ролей Exchange группе в Azure AD с помощью API Microsoft Graph.
    Anonymous » » в форуме C#
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • Программное назначение ролей Exchange группе в Azure AD с помощью API Microsoft Graph.
    Anonymous » » в форуме C#
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous
  • Программное назначение ролей Exchange группе в Azure AD с помощью API Microsoft Graph.
    Anonymous » » в форуме C#
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»