Я не очень разбираюсь в API, не говоря уже о Microsoft. API графа. Поэтому я считаю это решение полезным, но поскольку я новичок, мне не хватает некоторых шагов, не перечисленных в руководстве.
Я выполнил следующие шаги:
- Зарегистрируйте приложение и приложение-функцию Azure в Azure.
- Сохраните AppID, идентификатор клиента и секрет клиента зарегистрированного приложения.
- Добавьте разрешения API и предоставьте доступ администратора.
- Создайте новый проект функции Azure в Visual Studio.
- Скопируйте и вставьте код.
- Установить пакеты.
- Добавить класс в проект.
Это код в файле функции:
Код: Выделить всё
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Logging;
using Azure.Identity;
using Microsoft.Graph;
using System.Security.Claims;
using Newtonsoft.Json;
namespace FunctionApp2
{
public class Function1
{
[FunctionName("Function1")]
public static async Task Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
ILogger log, ClaimsPrincipal claimIdentity)
{
var options = new TokenCredentialOptions
{
AuthorityHost = AzureAuthorityHosts.AzurePublicCloud
};
var clientSecretCredential = new ClientSecretCredential(
Constants.TenantId, Constants.AppId, Constants.ClientSecret, options);
var graphClient = new GraphServiceClient(clientSecretCredential, Constants.scopes);
var user = await graphClient.Users[claimIdentity.Identity.Name].GetAsync();
var json = Newtonsoft.Json.JsonConvert.SerializeObject(user);
return new OkObjectResult(json);
}
}
}
Код: Выделить всё
internal class Constants
{
public static string AppId = "";
public static string TenantId = "";
public static string ClientSecret = "";
public static string TenantName = "";
public static string [] scopes = new[] { "https://graph.microsoft.com/.default" };
}
[*]Azure.Identity
[*]Microsoft.Graph
[*]Microsoft.NET.Sdk.Functions
[*]Microsoft.Build.Framework
< /ul>
Однако при локальном запуске проекта в Visual Studio я получаю следующую ошибку:
Ошибка MSB4062. Не удалось загрузить задачу «GenerateFunctionMetadata». из сборки C:\Users.... (скрыть остальную часть пути). Убедитесь, что объявление верно, что сборка и все ее зависимости доступны и что задача содержит открытый класс, реализующий Microsoft.Build.Framework.ITask. FunctionApp2 C:\Users.... (скрыть остальную часть пути).
Когда я запускаю это из приложения-функции Azure, я получаю этот экран:
экран браузера
Таким образом, синий экран с сообщением «Ваше приложение Functions 4.0 запущено и работает.
Функции Azure — это бессерверные вычисления на основе событий, ускоряющие вашу разработку». сообщение.
Может кто-нибудь помочь мне с этим запросом?
Любая помощь будет очень признательна.
Пытался воссоздать проект много раз, а также в разных версиях .NET 6 и 8.
Подробнее здесь: https://stackoverflow.com/questions/786 ... ft-graph-a