Facebook SDK-获取潜在客户的详细信息-ASP .net核心API

时间:2019-07-08 14:57:06

标签: facebook api sdk token lead

我想做的是在webhook ASP.net核心API中从我的Facebook页面中检索我的Facebook线索,获取线索详细信息并将其保存在mongoDB数据库中。

由于令牌的原因,我无法在API中获取潜在客户的详细信息。

然后我在Facebook开发人员文档中看到了:获取常规用户令牌。 b。将其转换为长期令牌c。使用寿命长的用户的访问令牌,请请求页面令牌[..]此寿命长的页面令牌没有到期日期;请使用有效的令牌。您可以在简单的RTU集成中对其进行硬编码以获取销售线索数据。

问题是我得到了页面令牌,就像他们在其文档中显示的那样,但是它在我获得它的一小时后过期了。但是他们说这里还没有到期。所以我不知道该怎么办。

我所做的是从Web上获取令牌,并将其保存在数据库中,当潜在客户出现时,在我的数据库中搜索该令牌以请求获取页面的潜在客户详细信息。

我尝试使用应用程序令牌,但出现错误,我需要用户令牌,但从API获取用户令牌似乎不正确。

如果我错过任何事情,请告诉我。真的需要您的帮助!谢谢!

我有Angular Web和ASP.net核心API。我尝试了一个应用令牌,并从网络上获得了一个页面令牌。

网络:

///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中的令牌未过期。但由于令牌已过期或应用令牌无效,我收到了错误消息

0 个答案:

没有答案