Что я пытаюсь сделать, так это получить свои ссылки на Facebook со своей страницы в основном API-интерфейсе webhook ASP.net, получить сведения о потенциальных клиентах и сохранить их в моей базе данных mongoDB.
У меня возникла проблема с получением моегопривести подробности в API из-за токена.
А потом я увидел в документах для разработчиков на Facebook: a.Получить токен обычного пользователя.б.Преобразуйте его в долгоживущий токен c.С токеном доступа долгоживущего пользователя запросите токен страницы [..] Этот токен долгоживущей страницы не имеет даты истечения срока действия;Вы можете жестко закодировать его в простых RTU-интеграциях, чтобы получить данные о потенциальных клиентах.
Проблема в том, что я получил этот маркер страницы, как они показывают в своих документах, но он истек через час после того, как я его получил.Но они говорят здесь, это не истекает.Поэтому я не понимаю, как мне поступить.
Я получил токен из Интернета, сохранил его в своей базе данных, а когда появляется потенциальный клиент, поищу его в моей базе данных, чтобы выполнить запрос на получениепривести детали страницы.
Я пытался с токеном приложения, но у меня была ошибка, что мне нужен токен пользователя, но получение токена пользователя из API кажется неправильным.
Скажитея, если я что-то пропущу.Очень нужна ваша помощь здесь!Спасибо!
У меня есть мой Angular Web и мой основной API ASP.net.Я попытался с помощью токена приложения и токена страницы, полученного из Интернета.
Веб:
///Login
FB.login(response => {
if (response.authResponse) {
this.userId = response.authResponse.userID;
FB.api('me/accounts', responsePages => {
this.ngzone.run(() => {
this.pages = responsePages.data.map(elem => {
let page = new FacebookPage();
page.access_token = elem.access_token;
page.category = elem.category;
page.id = elem.id;
page.name = elem.name;
FB.api(page.id + "/subscribed_apps?access_token=" + page.access_token, res => {
if (res.data.length > 0 && res.data[0].name === facebookAPPName && res.data[0].id === facebookAPPId)
page.connected = true;
else page.connected = false;
})
return page;
});
});
})
}
else {
console.log('User login failed');
}
}, { scope: ['manage_pages', 'leads_retrieval'] });
///Link Page
FB.api(this.userId+"/accounts", res => {
let accessToken = res.data.filter(elem => elem.name === page.name[0].access_token;
FB.api('/' + page.id + '/subscribed_apps',
'post',
{ access_token: page.access_token, subscribed_fields: ['leadgen'] },
(response) => {
console.log('Successfuly subscribed ' + JSON.stringify(response))
page.connected = true;
page.access_token = accessToken;
this.facebookService.link(page).subscribe(()=>{
this.spinner.hide();
},
err => { console.log(err); this.spinner.hide();})
})
})
API:
[HttpPost]
public IActionResult Post([FromBody]FacebookLead data)
{
var entry = data.entry.FirstOrDefault();
var change = entry?.changes.FirstOrDefault();
var leadId = change.value.leadgen_id;
var client = new HttpClient();
var page = this.facebookService.Get(change.value.page_id);
var request = client.GetAsync("https://graph.facebook.com/v3.3/" + leadId + "?access_token=" + page.access_token);
request.Wait();
var res = request.Result.Content.ReadAsStringAsync();
res.Wait();
var result = res.Result;
return Ok();
}
Ожидаемый вывод - это детальлидерство, без истечения срока действия токена в API.Но я получаю сообщение об ошибке: токен истек или токен приложения не работает