【问题标题】:The remote server returned an error : (401) Unauthorized - PowerShell - Microsoft Graph API远程服务器返回错误:(401) Unauthorized - PowerShell - Microsoft Graph API
【发布时间】:2019-10-11 15:23:29
【问题描述】:

我正在尝试获取 resourceProvisioningOptions = Team 的所有组的列表,这是通过 API 调用获取所有数据的 url:

$clientID = xxxx
$tenantName = xxxx
$ClientSecret = xxxx
$resource = "https://graph.microsoft.com/"


$ReqTokenBody = @{
Grant_Type    = "client_credentials"
Scope         = "https://graph.microsoft.com/.default"
client_Id     = $clientID
Client_Secret = $clientSecret 
} 

$authheader = @{

    'Authorization' = "Bearer $($Tokenresponse.access_token)"
    'Content-Type'='application\json'

}

$TokenResponse = Invoke-RestMethod -Uri "https://login.microsoftonline.com/$TenantName/oauth2/v2.0/token" -Method POST -Body $ReqTokenBody

$test = "'Team'"

$apiUrl = 'https://graph.microsoft.com/beta/groups?$filter=resourceProvisioningOptions/Any(x:x eq {0})' -f $test

$Data = Invoke-RestMethod -Uri $apiUrl -Headers $authheader -Body $ReqTokenBody -Method Get


$Groups = ($Data | select-object Value).Value | Select-Object  displayName, id, description, mail | Out-File .\texxtfile.txt

但是,即使我拥有进行 API 调用所需的所有权限,当我尝试运行脚本时仍会收到 401 错误。

【问题讨论】:

    标签: powershell api microsoft-graph-api microsoft-teams


    【解决方案1】:

    您可能在 AAD 应用程序中选择了应用程序权限。还有一个额外的步骤。您需要在应用程序注册门户中管理员同意您的应用程序才能使用 Group.Read.All 来运行它。如果您尚未在 UI 中执行此操作,则会失败。

    【讨论】:

    • 我有委托权限并且我有 Group.Read.All 和 Group.ReadWrite.All 授予我的租户。
    • 如果您使用的是委派权限...那么您是否为您正在使用的用户完成了 ui 同意流程?对于 powershell,确实建议您使用应用程序权限(仅限应用程序)。我们处于 PowerShell SDK 的早期预览阶段。您可能想尝试一下,它使用的设备代码流确实有助于在 PowerShell github.com/microsoftgraph/msgraph-sdk-powershell 中登录和同意此流
    • 感谢您的帮助。是的,使用设备代码流,我可以获得所需的信息,并且我的脚本运行良好。但是,使用 client_credentials 并在 API 权限中进行更改后,在为 Groups/ 启用应用程序权限后,我仍然收到 401 未经授权的代码/
    • 解决代码后,我停止收到 401 错误,但最终收到 400 错误。
    猜你喜欢
    • 1970-01-01
    • 2011-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多