示例#1
0
        public ApiResponse SaveToken(string id, [FromBody] string uid, [FromBody] string token)
        {
            ApiResponse response = new ApiResponse();

            if (string.IsNullOrWhiteSpace(uid))
            {
                response.msg = "UserIid required";
                return(response);
            }

            if (string.IsNullOrWhiteSpace(token))
            {
                response.msg = "Token required";
                return(response);
            }

            var agent = _agentService.GetById(id);

            try
            {
                agent.ext_id = uid;
                agent.facebook_access_token = _facebookService.GetLonglivedToken(_appSettings.Value.ClientId, _appSettings.Value.ClientSecret, token) ?? token;
                response.data = _agentService.Create(agent);
                response.ok   = true;
            }
            catch (Exception ex)
            {
                response.ok  = false;
                response.msg = ex.Message;
                throw ex;
            }
            return(response);
        }
示例#2
0
        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);
        }