Приложение-функция, отправляющее сообщение в канал Команды через Graph API - не авторизовано - PullRequest
1 голос
/ 13 февраля 2020

Я пытаюсь отправить сообщение на канал команды с помощью функции Azure через Microsoft Graph.

Я выполнил шаги по регистрации приложения в Azure AD, предоставляя разрешения API этого приложения (Group.ReadWrite.All), запрашивая токен, чтобы мое приложение могло вызывать Graph как пользователь, а затем вызывать API с этим токеном носителя.

Пока это работает для получения сообщений из команд Канал, и вызов возвращает все сообщения из канала, как ожидалось. Но когда я пытаюсь POST новое сообщение, я получаю Unauthorised ответ. Я думаю, что выбрал правильные разрешения API и получил разрешение на эти разрешения, поэтому не вижу, что пропустил или испортил.

Вот некоторые подробности моего запроса токена AAD:

  • API (POST): https://login.microsoftonline.com/{TenantId}/oauth2/token
  • RestSharp Параметры:
    • Ресурс: https://graph.microsoft.com
    • Область: https://graph.microsoft.com/.default
    • Идентификатор клиента: {GUID идентификатора приложения}
    • Секрет клиента {Секрет от регистрации приложения}
    • Имя пользователя: (адрес электронной почты моих делегированных пользователей)
    • Пароль: (Мои делегированные пользователи пароль)

И вот возвращенный токен

{
  "token_type":"Bearer",
  "scope":"Chat.ReadWrite Group.ReadWrite.All TeamsActivity.Send User.Read",
  "expires_in":"3599",
  "ext_expires_in":"3599",
  "expires_on":"1581602086",
  "not_before":"1581598186",
  "resource":"https://graph.microsoft.com",
  "access_token":"eyJ0eXAiOiJKV1QiLCJub25jZSI6Ilp6REVFN..."
}

Затем я выполняю вызов к конечной точке Графа /beta/teams/{Team ID}/channels/{Channel ID}/messages с заголовком токена носителя. Затем я пытаюсь POST сообщение, добавив к сообщению следующее тело (RestSharp):

graphRequest.AddParameter(
  "application/json", 
  "{\"body\": {\"content\": \"Hello World\"}}", 
  ParameterType.RequestBody);

И это ответ:

{
  "error": {
    "code": "Forbidden",
    "message": "Forbidden",
    "innerError": {
      "request-id": "487ce496-09dd-4385-98ba-f7c1f561b996",
      "date": "2020-02-13T13:27:32"
    }
  }

Вот декодированный токен

{
  "iat": 1581600138,
  "nbf": 1581600138,
  "exp": 1581604038,
  "acct": 0,
  "acr": "1",
  "aio": "{removed}",
  "amr": ["pwd"],
  "app_displayname": "{removed}",
  "appid": "{removed}",
  "appidacr": "1",
  "family_name": "test",
  "given_name": "AM",
  "ipaddr": "{removed}",
  "name": "AM Test",
  "oid": "{removed}",
  "platf": "14",
  "puid": "10032000842ED84F",
  "scp": "Chat.ReadWrite Group.ReadWrite.All TeamsActivity.Send User.Read",
  "sub": "{removed}",
  "tid": "{removed}",
  "unique_name": "{removed}.onmicrosoft.com",
  "upn": "{removed}.onmicrosoft.com",
  "uti": "{removed}",
  "ver": "1.0",
  "xms_tcdt": 1307525692
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...