public async Task <ActionResult> CreateSubscription() { if (User.Identity.IsAuthenticated) { string identifier = User.FindFirst(Startup.ObjectIdentifierType)?.Value; var graphClient = _graphSdkHelper.GetAuthenticatedClient(identifier); Subscription createdSubscription = null; Subscription subscription = new Subscription { Resource = "me/messages", ChangeType = "created,updated", NotificationUrl = GraphAuthProvider.GetNotificationUrl(), ClientState = Guid.NewGuid().ToString(), ExpirationDateTime = DateTime.UtcNow + new TimeSpan(0, 0, 15, 0) }; try { createdSubscription = await graphClient.Subscriptions.Request().AddAsync(subscription); } catch (ServiceException e) { string message = e.Message; return(RedirectToAction("Index", "Error", new { message = e.Message, debug = e.Message })); } SubscriptionViewModel viewModel = new SubscriptionViewModel { Subscription = JsonConvert.DeserializeObject <Models.Subscription>(JsonConvert.SerializeObject(createdSubscription)) }; SubscriptionStore.SaveSubscriptionInfo(viewModel.Subscription.Id, viewModel.Subscription.ClientState, User.FindFirst(Startup.ObjectIdentifierType)?.Value, User.FindFirst(Startup.TenantIdType)?.Value); subscriptionId = viewModel.Subscription.Id; return(View("Subscription", createdSubscription)); } return(View("Subscription", null)); }
public async Task <ActionResult> Index(GraphApiPage currentPage) { ClaimsPrincipal principal = HttpContext.User as ClaimsPrincipal; if (principal.Identity.IsAuthenticated) { string upn = principal.FindFirst("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn")?.Value; upn = HttpUtility.UrlEncode(upn); //var graphService = ServiceLocator.Current.GetInstance<GraphService>(); var graphProvider = new GraphAuthProvider(MemoryCache.Default); var graphService = new GraphService(MemoryCache.Default, new GraphSdkHelper(graphProvider), graphProvider); CompositeGraphObject compositeGraphObject = await graphService.GetUserJson(upn, null); currentPage.CompositeGraphObject = compositeGraphObject; return(View(PageViewModel.Create(currentPage))); } return(View()); }