Le point de terminaison d'authentification v2 ne prend actuellement pas en charge les étendues d'application uniquement authentifiées sans interaction d'interface utilisateur. Vous pouvez obtenir le jeton d'accès et le jeton d'actualisation à l'aide de la bibliothèque MSAL (Microsoft Authentication Library) en vous connectant à Azure AD. Vous pouvez ensuite utiliser le jeton d'accès et actualiser les utilisateurs de whiteout de jeton interactifs. Les jetons de rafraîchissement sont valides pendant 14 jours et, en cas d'utilisation continue, ils peuvent durer jusqu'à 90 jours. Après 90 jours, les utilisateurs seront invités à se ré-authentifier.
Voici un échantillon de référence pour télécharger le PDF à onedrive pour bushiness:
public static void CreateItem(string accessToken)
{
string itemCreateUri = "https://graph.microsoft.com/v1.0/me/drive/root/children";
string itemData = "{\"name\":\"book2.pdf\",\"file\":{}}";
var itemCreatedResult = RESTRequsetHelper.RESTRequsetHelper.PostAsync(itemCreateUri, itemData, accessToken).Result;
DriveItem item = new DriveItem(itemCreatedResult);
string itemUploadUri= $"https://graph.microsoft.com/v1.0/me/drive/items/{item.Id}/content";
System.IO.FileStream fs = System.IO.File.Open(@"C:\users\user1\desktop\book1.pdf",System.IO.FileMode.Open);
StreamContent streamContent = new StreamContent(fs);
var uploadResult= RESTRequsetHelper.RESTRequsetHelper.SendHttpRequest(HttpVerb.PUT, itemUploadUri, streamContent, accessToken).Result;
fs.Close();
}
public static async Task<string> PostAsync(string uri, string jsonBody, string accessToken)
{
return await SendHttpRequest(HttpVerb.POST, uri, jsonBody, accessToken);
}
private static async Task<string> SendHttpRequest(HttpVerb ver, string uri, string jsonBody, string accessToken)
{
HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("bearer", $"{accessToken}");
var stringContent = new StringContent(jsonBody,Encoding.UTF8,"application/json");
if (ver == HttpVerb.POST)
{
return await client.PostAsync(uri, stringContent).ContinueWith<string>((response) =>
{
return response.Result.Content.ReadAsStringAsync().Result;
});
}
else
{
return await client.PutAsync(uri, stringContent).ContinueWith<string>((response) =>
{
return response.Result.Content.ReadAsStringAsync().Result;
});
}
}
public static async Task<string> SendHttpRequest(HttpVerb ver, string uri, StreamContent steamBody, string accessToken)
{
HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("bearer", $"{accessToken}");
if (ver == HttpVerb.POST)
{
return await client.PostAsync(uri, steamBody).ContinueWith<string>((response) =>
{
return response.Result.Content.ReadAsStringAsync().Result;
});
}
else
{
return await client.PutAsync(uri, steamBody).ContinueWith<string>((response) =>
{
return response.Result.Content.ReadAsStringAsync().Result;
});
}
}
}
Merci. Vraiment besoin d'avoir des étendues d'application seulement qui authentifié sans interaction UI. espérons que l'équipe peut apporter cette fonctionnalité – Jens