public string CreateChannel(string type, string business_id, [FromForm] string page_id, [FromForm] string page_name, [FromForm] string token) { try { var list = _channelService.GetChannelsByExtId(page_id).Result.Where(b => b.active).ToList(); if (list == null || list.Count == 0) { string longLivedToken = _facebookService.GetLonglivedToken(_appSettings.Value.ClientId, _appSettings.Value.ClientSecret, token); page_name = Core.Helpers.CommonHelper.EnsureMaximumLength(page_name, 200); Channel data = new Channel { id = ChannelService.FormatId(business_id, page_id), business_id = business_id, ext_id = page_id, name = string.IsNullOrWhiteSpace(page_name) ? type + page_id : page_name, active = true, type = type, token = string.IsNullOrWhiteSpace(longLivedToken) ? token : longLivedToken }; var resultData = _channelService.Create(data); _facebookService.SubscribeToAppWebhook(page_id, data.token); } else { var data = list[0]; var url = string.Format("https://graph.facebook.com/v2.8/oauth/access_token?grant_type=fb_exchange_token&client_id={0}&client_secret={1}&fb_exchange_token={2}", _appSettings.Value.ClientId, _appSettings.Value.ClientSecret, token); string longLivedToken = ""; try { longLivedToken = Core.Helpers.WebHelper.HttpGetAsync <dynamic>(url).Result.access_token; } catch (Exception ex) { _logService.Create(new Log { message = ex.Message, category = "Channels", name = "Get long lived token", link = url }); } _facebookService.SubscribeToAppWebhook(data.ext_id, data.token); data.name = page_name ?? data.type + "-" + data.ext_id; data.token = longLivedToken ?? token; return(_channelService.Create(data)); // throw new Exception("Channel already added"); } } catch (Exception ex) { _logService.Create(new Log { category = "Channels", link = $"{Request.HttpContext.Request.Scheme}://{Request.HttpContext.Request.Host}{Request.HttpContext.Request.Path}{Request.HttpContext.Request.QueryString}", message = ex.Message, details = ex.StackTrace, name = string.Format("Create channel for facebook page-{0} of business-{1} use token={2}", page_id, business_id, token) }); throw ex; } return(page_id); }