Microsoft Graph API-Daemon – Fehler: ResourceNotFound-Meldung: Ressource konnte nicht erkannt werdenC#

Ein Treffpunkt für C#-Programmierer
Anonymous
 Microsoft Graph API-Daemon – Fehler: ResourceNotFound-Meldung: Ressource konnte nicht erkannt werden

Post by Anonymous »

Ich versuche, einen Daemon mit Microsoft Graph API v1.0 zu erstellen.

Ich habe meine App mit den Anwendungsberechtigungen Calendars.ReadWrite und User.Read.All mit erteilter Administratoreinwilligung registriert.

Ich erhalte das Zugriffstoken korrekt und rufe GetUserId auf, das die Benutzer-ID zum Festlegen von requestURI zurückgibt.

Danach möchte ich den Outlook-Kalender abrufen:

Code: Select all

var id = await GetUserId(result.AccessToken);

var httpClient = new HttpClient();
httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", result.AccessToken);
httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

String requestURI = $"https://graph.microsoft.com/v1.0/users/{id}/calendars";

var response = await httpClient.GetAsync(requestURI);
var responseString = await response.Content.ReadAsStringAsync();
aber ich erhalte diese Fehlermeldung:

Code: Select all

{
"error": {
"code": "ResourceNotFound",
"message": "Resource could not be discovered.",
"innerError": {
"request-id": "5ecd547b-9281-4824-94e5-095691e759aa",
"date": "2020-01-14T16:44:16"
}
}
}
Wenn ich requestURI auf „users/{id} oder organization setze, funktioniert die Anfrage einwandfrei, aber das Hinzufügen von /calendars, /events oder /mailFolder führt zu dem oben genannten Fehler.

Ich glaube, mein Problem liegt darin, dass ich ein persönliches Konto verwendet habe. Muss ich ein Geschäfts- oder Schulkonto verwenden? Ist es möglich, ein persönliches Konto zu verwenden? Gibt es einen anderen Grund für meinen Fehler?

Update: Code zum Abrufen eines Tokens:

Code: Select all

app = ConfidentialClientApplicationBuilder
.Create(ClientId)
.WithClientSecret(ClientSecret)
.WithAuthority($"https://login.microsoftonline.com/{TenantId}/oauth2/v2.0/token&grant_type=client_credentials&resource=https://graph.microsoft.com")
.Build();
string[] scopesClient =
new string[] { $"https://graph.microsoft.com/.default" };
AuthenticationResult result = null;
try
{
result = await app.AcquireTokenForClient(scopesClient).ExecuteAsync();
}
catch (MsalServiceException ex) when(ex.Message.Contains("AADSTS70011"))
{

}

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post