2017-04-13 3 views
0

Très bien, donc après avoir discuté avec Microsoft "Professional Support", ils ne pouvaient pas m'aider. M'avait dit d'accéder aux rapports via l'interface graphique du rapport SfB et d'exporter vers Excel.Erreur 400 Mauvaise demande lors de la tentative d'activation de l'activité Skype Entreprise via l'API graphique

Oui, c'est complètement inutile pour moi. Après avoir lu beaucoup plus, mon premier exemple d'authentification était obsolète.

Maintenant, j'ai un script oAuth2 PowerShell entièrement fonctionnel qui me donne un jeton valide.

Mais j'ai le même problème lorsque j'utilise l'Explorateur de graphes (403 Interdit). Je sais que le jeton fonctionne parce que je peux interroger d'autres informations \ si j'enlève le VAR du jeton de l'en-tête GET, les erreurs indiquant que le jeton du porteur est vide, tout est correct.

Microsoft, if you're out there can someone please confirm that the SfB Report API is up and running for the statistics I'm attempting to pull?

MISE À JOUR SCRIPT

#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'

ORIGINAL FILET Quelqu'un peut-il s'il vous plaît jeter un oeil à ce code REST et me dire ce qu'ils pensent?

Je reçois:

Invoke-RestMethod: Le serveur distant a renvoyé une erreur: (400) Bad Request.

  • CategoryInfo: InvalidOperation

Je n'ai pas été en mesure de tirer un Skype unique pour le rapport d'activité des entreprises utilisant le graphique.

$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

Répondre

1

Vous êtes absent /content dans votre URI. Voir le document here.

$uri = "https://graph.microsoft.com/beta/reports/SfbActivity(view='Detail',date='2017-04-11')/content" 
+0

Malheureusement cela n'a pas résolu le problème mais c'est une bonne prise . Je n'étais pas capable de le faire fonctionner en utilisant Microsoft Graph Explorer. J'ai un ticket ouvert à Microsoft à ce sujet. Je me rends compte que c'est en version bêta, mais j'ai vraiment besoin d'obtenir ces statistiques. – CWB

+0

Graph Explorer peut ne pas fonctionner pour le moment. Je ne crois pas qu'il demande la portée Reports.Read.All, donc il va tout simplement rejeter une erreur 403. –

+0

Salut Marc, savez-vous si l'API SfB pour les rapports est accessible? – CWB

0

Ok donc après avoir joué avec l'API et lu, j'ai décidé de recommencer à zéro. Il s'avère que le problème était tout le temps le type d'application dans Azure. J'utilisais une application que quelqu'un avait créée avant de me lancer dans le projet. Son type d'application a été défini sur "Web \ API" dans Azure qui était apparemment incorrect. J'ai créé une nouvelle application avec le type d'application "Native", modifié mon code avec la nouvelle clé d'accès secrète et l'ID du client d'application et j'ai pu commencer à extraire les fichiers .csv. Le problème est maintenant que les données PSTN ne sont pas là. J'ai créé un ticket avec le groupe Microsoft Graph sur GitHub demandant des informations pour savoir s'ils sont conscients de ce problème. Pour le moment, je suis incapable de trouver une méthode programmatique pour exporter les détails des appels RTC via l'API. Vous pouvez garder un oeil sur leurs progrès ici pour cette demande mais au-delà je suis bloqué jusqu'à ce que Microsoft Dev fasse le rapport détaillé de SfBActivity inclure ces champs de données: https://github.com/microsoftgraph/microsoft-graph-docs/issues/1133