尝试通过图谱API提取Skype for Business活动时出现错误400错误请求

时间:2017-04-13 13:51:44

标签: microsoft-graph skype-for-business

好吧,所以在与微软“专业支持”聊天后,他们无法帮助我。告诉我通过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。

  • CategoryInfo:InvalidOperation

我无法使用图表提取单个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

2 个答案:

答案 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