Ms Graph RestAPI создать команду 404

#microsoft-graph-api #microsoft-graph-teams

#microsoft-graph-api #microsoft-graph-teams

Вопрос:

первая попытка работает, он добавляет группу объявлений ms graph в office365. Но вторая попытка улова (преобразование группы в команду не работает. Я получаю ошибку 404?? Идентификатор группы существует на сервере, который я заметил. Что происходит не так, чтобы получить 404?

Я добавил секретный токен на панель управления Azure. Скрипт имеет токен, appid и tenantid в реальном времени. также: у арендатора есть графические роли, такие как group.ReadWriteAll. то же самое для команд и каталогов.

 Clear-Host

$env:graphApiDemoAppId = ""   # Replace with your Azure AD app id
$env:graphApiDemoAppSecret = ""            # Replace with your Azure AD app secret
$env:tenantId = ""           # Replace with your Azure AD tenant ID

$oauthUri = "https://login.microsoftonline.com/$env:tenantId/oauth2/v2.0/token"

# Create token request body
$tokenBody = @{
    client_id     = $env:graphApiDemoAppId
    client_secret = $env:graphApiDemoAppSecret
    scope         = "https://graph.microsoft.com/.default"    
    grant_type    = "client_credentials"
}

# Retrieve access token
$tokenRequest = Invoke-RestMethod -Uri $oauthUri -Method POST -ContentType "application/x-www-form-urlencoded" -Body $tokenBody -UseBasicParsing

# Save access token
$accessToken = ($tokenRequest).access_token

$headers = @{
  "Authorization" = "Bearer $accessToken"
  "Content-type" = "application/json"
}

try 
{
    # Create group request body
    $groupName = "Test_Kenvh16"
    $groupBodyParams = @{
        displayName = $groupName
        description = $groupName
        mailNickName = $groupName
        groupTypes = @("Unified")
        mailEnabled = $true
        securityEnabled = $false
        visibility = "Private"
    }
    $groupBody = ConvertTo-Json -InputObject $groupBodyParams
    $newGroup = Invoke-RestMethod -Uri "https://graph.microsoft.com/v1.0/groups" -Method POST -Headers $headers -Body $groupBody
    $groupId = $newGroup.id
    Write-Host "group created:" $groupName "id:" $groupId

    try
    {
        #convert group to team..
        $teamBodyParams = @{
            memberSettings = @{
                allowCreateUpdateChannels = $true
            }
            messagingSettings = @{
                allowUserEditMessages = $true
                allowUserDeleteMessages = $true
            }
            funSettings = @{
                allowGiphy = $true
                giphyContentRating = "strict"
            }
        }
        $teamBody = ConvertTo-Json -InputObject $teamBodyParams
        $teamUri = "https://graph.microsoft.com/v1.0/groups/"   $groupId   "/team"
        $newTeam = Invoke-RestMethod -Uri $teamUri -Method POST -Headers $headers -Body $teamBody
        $teamId = $newTeam.id
    }
    catch
    {
        Write-Host "createTeam ExceptionMessage:" $_.Exception.Message
        Write-Host "createTeam StatusCode:" $_.Exception.Response.StatusCode.value__ 
        Write-Host "createTeam StatusDescription:" $_.Exception.Response.StatusDescription
    }
} 
catch 
{
    Write-Host "createGroup ExceptionMessage:" $_.Exception.Message
    Write-Host "createGroup StatusCode:" $_.Exception.Response.StatusCode.value__ 
    Write-Host "createGroup StatusDescription:" $_.Exception.Response.StatusDescription
}
 

Комментарии:

1. Я нашел некоторую информацию о MS: если группа была создана менее 15 минут назад, вызов Create team может завершиться ошибкой с кодом ошибки 404 из-за задержек репликации. Мы рекомендуем вам повторить вызов Create team три раза с 10-секундной задержкой между вызовами. Собираюсь попробовать это сегодня…

2. Я могу подтвердить. Microsoft необходимо реплицировать объекты на серверах. Таким образом, возможно, вы уже можете просматривать объекты, но они еще не реплицированы, поэтому вы пока не можете изменить их свойства. вывод заключается в том, что ошибка 404 не была ошибкой скрипта, это задержка репликации с Microsoft. Мое решение будет заключаться в том, чтобы запускать скрипт каждый день или 4 раза в день, а затем при следующем запуске он успешно преобразует группу в команду.

3. Да, вы правы, @ken. Я тоже могу наблюдать то же самое со своей стороны. Я бы посоветовал вам опубликовать ответ ниже. Так что это может быть полезно и для любого члена сообщества 🙂