好吧,所以在与微软“专业支持”聊天后,他们无法帮助我。告诉我通过SfB报告GUI访问报告并导出到Excel。
是的,这对我来说完全没用。 在做了更多阅读之后,我的第一个验证示例已经过时了。
现在我有一个功能齐全的oAuth2 PowerShell脚本,可以获得有效的令牌。
但是当我使用Graph Explorer(403 Forbidden)时,我遇到了同样的问题。 我知道令牌正在工作,因为我可以查询其他信息\如果我从GET标头中取走令牌的VAR,则说明承载令牌是空的,所以一切都是正确的。
Microsoft ,如果您在那里,有人可以确认SfB报告API已启动并正在运行以获取我试图提取的统计信息吗?
更新的脚本
#Obtaining oAuth2 Token from Microsoft Azure \ communicate with Microsoft Graph API
$ClientID = "MyID"
$client_Secret = "MySecretKey"
#Define URI for Azure Tenant
$Uri = "https://login.microsoftonline.com/MyTenantID/oauth2/token"
#Define Microsoft Graph - Skype for Business reports interface URI
$exportSfB = "https://graph.microsoft.com/beta/reports/SfbActivity(view='Detail',date='2017-04-11')/content"
#Define the body of the request
$Body = @{grant_type='client_credentials';client_id=$ClientID;client_secret=$client_secret;resource='https://graph.microsoft.com'}
#Define the content type for the request
$ContentType = "application/x-www-form-urlencoded"
#Invoke REST method. This handles the deserialization of the JSON result. Less effort than invoke-webrequest
$admAuth=Invoke-RestMethod -Uri $Uri -Body $Body -Method Post
#Construct the header value with the access_token just recieved
$HeaderValue = "Bearer " + $admauth.access_token
#Query Microsoft Graph with new Token
$result = Invoke-RestMethod -Headers @{Authorization=$HeaderValue} -Uri $exportSfB –Method Get -Verbose
#Results should be a .CSV
$result.string.'#text'
原始线程 有人可以看看这个REST代码并告诉我他们的想法吗?
我收到了:
Invoke-RestMethod:远程服务器返回错误:(400)Bad Request。
我无法使用图表提取单个Skype for Business活动报告。
$tenant = "MyTenant.onmicrosoft.com"
function GetAuthToken
{
param
(
[Parameter(Mandatory=$true)]
$TenantName
)
$adal = "${env:ProgramFiles(x86)}\Microsoft SDKs\Azure\PowerShell\ServiceManagement\Azure\Services\Microsoft.IdentityModel.Clients.ActiveDirectory.dll"
$adalforms = "${env:ProgramFiles(x86)}\Microsoft SDKs\Azure\PowerShell\ServiceManagement\Azure\Services\Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms.dll"
[System.Reflection.Assembly]::LoadFrom($adal) | Out-Null
[System.Reflection.Assembly]::LoadFrom($adalforms) | Out-Null
$clientId = "MyID"
$redirectUri = "urn:ietf:wg:oauth:2.0:oob"
$resourceAppIdURI = "https://graph.microsoft.com/"
$authority = "https://login.windows.net/$TenantName"
$authContext = New-Object "Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext" -ArgumentList $authority
$authResult = $authContext.AcquireToken($resourceAppIdURI, $clientId,$redirectUri, "Auto")
return $authResult
}
# Set Token var
$token = GetAuthToken -TenantName $tenant
# Building Rest Api header with authorization token
$authHeader = @{
'Content-Type'='application\json'
'Authorization'=$token.CreateAuthorizationHeader()
}
$uri = "https://graph.microsoft.com/beta/reports/SfbActivity(view='Detail',date='2017-04-11')"
$output = (Invoke-RestMethod -Uri $uri –Headers $authHeader –Method Get –Verbose).value
答案 0 :(得分:1)
您的URI中缺少/content
。请参阅文档here。
$uri = "https://graph.microsoft.com/beta/reports/SfbActivity(view='Detail',date='2017-04-11')/content"
答案 1 :(得分:0)
好的,所以在搞乱了API并阅读之后我决定从头开始。 结果证明整个时间是Azure中的App类型的问题。我正在使用某个人在我参与该项目之前创建的应用程序。它的应用程序类型设置为" Web \ API"在Azure中显然是不正确的。我创建了一个应用程序类型为" Native"的新应用程序,用新的秘密访问密钥和应用程序客户端ID修改了我的代码,我能够开始拉下.csv文件。现在的问题是PSTN数据不存在。我在GitHub上创建了一个带有Microsoft Graph组的票证,要求提供有关他们是否了解此问题的信息。目前,我无法找到通过API导出PSTN呼叫详细信息的编程方法。你可以关注他们在这方面取得的进展,但除此之外,我一直坚持到微软Dev使SfBActivity详细报告包括那些数据字段:https://github.com/microsoftgraph/microsoft-graph-docs/issues/1133