internal static bool Validate(IGraphApiConfiguration config, DebugTokenResponse model) { DateTimeOffset expiredAtOffset = DateTimeOffset.FromUnixTimeSeconds(model.ExpiresAt); DateTime expiredAtUtc = expiredAtOffset.UtcDateTime; if (model.IsTokenValid && model.AppId == config.ApplicationId && DateTime.UtcNow < expiredAtUtc) { return(true); } return(false); }
private async Task <bool> DebugTokenCallAsync(HttpClient client, string clientToken, string appToken) { Uri debugTokenUri = new Uri($"{this.apiUrl}debug_token?input_token={clientToken}&access_token={appToken}"); HttpResponseMessage response = await client.GetAsync(debugTokenUri); if (response.IsSuccessStatusCode) { string content = await response.Content.ReadAsStringAsync(); DebugTokenResponse debugTokenResponse = JsonConvert.DeserializeObject <DebugTokenResponse>(content); return(DebugTokenValidator.Validate(this.configuration, debugTokenResponse)); } throw new FacebookApiException("DebugTokenCallAsync: the response is not succeded."); }
public async Task <DebugTokenResponse> DebugTokenAsync(string strToken) { DebugTokenResponse objDebugToken = null; try { string Url = GetUrlDebugToken(strToken); HttpClient client = new HttpClient(); HttpResponseMessage responseMessage = await client.GetAsync(Url); if (responseMessage.StatusCode == System.Net.HttpStatusCode.OK) { string body = await responseMessage.Content.ReadAsStringAsync(); objDebugToken = JsonConvert.DeserializeObject <DebugTokenResponse>(body); } } catch (Exception ex) { throw ex; } return(objDebugToken); }
public async Task <bool> OauthPiplineAsync(string strCode, string username) { if (String.IsNullOrEmpty(username) || String.IsNullOrEmpty(strCode)) { return(false); } try { PageInfoResponse objPageInfo; List <UserTokenModel> lstUserToken = new List <UserTokenModel>(); List <PageTokenModel> lstPageToken = new List <PageTokenModel>(); List <PageModel> lstPageInfo = new List <PageModel>(); // 1. USER Token OauthResponse objUserToken = await _facebookApi.OauthAsync(strCode); // 1.1. USER Token Debug DebugTokenResponse objUserDebugToken = await _facebookApi.DebugTokenAsync(objUserToken.AccessToken); lstUserToken.Add(new UserTokenModel() { AppId = objUserDebugToken.Data.AppId, UserId = objUserDebugToken.Data.UserId, Application = objUserDebugToken.Data.Application, AccessToken = objUserToken.AccessToken, IsValid = objUserDebugToken.Data.IsValid, ExpiresAt = objUserDebugToken.Data.ExpiresAt, IssuedAt = objUserDebugToken.Data.IssuedAt, Scopes = objUserDebugToken.Data.Scopes }); // 2. PAGE Token PageTokenResponse objPageDebugToken = await _facebookApi.GetPageTokenAsync(objUserToken.AccessToken); foreach (var item in objPageDebugToken.Data) { // 2.1. PAGE Token Debug var pageDebugToken = await _facebookApi.DebugTokenAsync(item.AccessToken); lstPageToken.Add(new PageTokenModel() { AppId = pageDebugToken.Data.AppId, UserId = pageDebugToken.Data.UserId, Application = pageDebugToken.Data.Application, ProfileId = pageDebugToken.Data.ProfileId, AccessToken = item.AccessToken, IsValid = pageDebugToken.Data.IsValid, ExpiresAt = pageDebugToken.Data.ExpiresAt, IssuedAt = pageDebugToken.Data.IssuedAt, Scopes = pageDebugToken.Data.Scopes }); // 2.2. Subscribe live_videos webhook await _facebookApi.SubscribeLiveVideoAsync(item.AccessToken); // 2.3. PAGE Info objPageInfo = await _facebookApi.GetPageInfoAsync(item.AccessToken); if (objPageInfo != null) { var lstCategory = new List <CategoryModel>(); foreach (var catergory in objPageInfo.Categories) { lstCategory.Add(new CategoryModel() { CategoryId = catergory.CategoryId, CategoryName = catergory.CategoryName }); } lstPageInfo.Add(new PageModel() { PageId = objPageInfo.PageId, PageName = objPageInfo.PageName, Categories = lstCategory, About = objPageInfo.About, Address = objPageInfo.Address, Link = objPageInfo.Link, Emails = objPageInfo.Emails, Website = objPageInfo.Website, FanCount = objPageInfo.FanCount, CheckinCount = objPageInfo.CheckinCount, CanCheckin = objPageInfo.CanCheckin, NewLikeCount = objPageInfo.NewLikeCount, CanPost = objPageInfo.CanPost, //Videos = new List<VideoModel>() }); } } // 3. Insert Or Update Data AccountModel accountModel = new AccountModel(); accountModel.UserTokens = lstUserToken; accountModel.PageTokens = lstPageToken; await _accountRepo.UpdateOneAsync(() => Builders <AccountModel> .Filter.Eq("Username", username), () => Builders <AccountModel> .Update.Set("UserTokens", accountModel.UserTokens).Set("PageTokens", accountModel.PageTokens)); foreach (var item in lstPageInfo) { var pageModel = _pageRepository.FindAsync(() => Builders <PageModel> .Filter.Eq("PageId", item.PageId)).Result.FirstOrDefault(); if (pageModel == null) { await _pageRepository.InsertOneAsync(item); } else { var update = Builders <PageModel> .Update .Set("PageName", item.PageName) .Set("Categories", item.Categories) .Set("About", item.About) .Set("Address", item.Address) .Set("Link", item.Link) .Set("Emails", item.Emails) .Set("FanCount", item.FanCount) .Set("NewLikeCount", item.NewLikeCount) .Set("CheckinCount", item.CheckinCount) .Set("CanCheckin", item.CanCheckin) .Set("CanPost", item.CanPost) .Set("CreatedTime", item.CreatedTime); await _pageRepository.UpdateOneAsync(() => Builders <PageModel> .Filter.Eq("PageId", item.PageId), () => update); } } } catch (Exception ex) { return(false); } return(true); }