javascript - 从 Facebook Messenger 中检索 first_name 会导致 [object Promise]

标签 javascript node.js object promise facebook-messenger

我正在编写一个简单的查询来返回我的 Facebook Messenger 聊天机器人用户的名字,如下所示:

async queryFB(id) {
  const fb_page_access_token = dotenv.FACEBOOK_ACCESS_TOKEN
  const response = await get("https://graph.facebook.com/v3.3/"+ id + "?fields=first_name&access_token=" + fb_page_access_token);
  const json = await response.json();

  return json.first_name
}

async fbFirstName() {
  const fbUserID = session.user.id

  try {
    const firstName = await queryFB(fbUserID);
    console.log(firstName);
  } catch(e) {
    console.log("Error: " + err);
  }
}

我正在关注这篇文章 here

问题是它只返回 [object Promise]。我认为解决这个问题的方法是使用异步和等待,但我仍然遇到同样的问题。

最佳答案

经过大量修改代码后,我设法解决了这个问题,如下所示:

   function fbFetch() {
      const fb_page_access_token = process.env.FACEBOOK_ACCESS_TOKEN
      var fbID = 716540089

      fetch('https://graph.facebook.com/v3.3/' + fbID + '?fields=first_name&access_token=' + fb_page_access_token)

      .then(function(response) {
        return response.json();
      })
      .then(function(myJson) {
        var fbName = JSON.stringify(myJson.first_name);
        var fbNameTrim = fbName.slice(1,-1);
        console.log(fbNameTrim);
        turnContext.sendActivity("Hi " + fbNameTrim + "! From inside fbFetch() before return fbNameTrim");
        return fbNameTrim;
      })
      catch(e) {
        console.log("Error: " + err);
      }
    }

我做的修改如下:

  • 我更新了 const fb_page_access_token 调用,因为它是我在原始帖子中的语法错误
  • 我添加了 .then 语句以确保函数的每个步骤都已完成,然后再继续下一步以解决我遇到的一些 [object Promise] 问题
  • 我使用 stringify 将 JSON 对象转换为字符串
  • 我使用 slice 函数去掉了为 first_name 返回的字符串的第一个和最后一个字符,因为它们是引号(“first_name”)

关于javascript - 从 Facebook Messenger 中检索 first_name 会导致 [object Promise],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57082542/

相关文章:

javascript - 使用 puppeteer 将一段文本分解为对象数组

javascript - 检测 audio.play() 何时完成

php - 创建与在 php 中传递对象相同的类的对象

java - 将 .txt 中的行读取到对象表中

node.js - 为什么协会在 Sequelize 中不起作用?

vba - 使用 ThisWorkbook.Sheets(1).Range 的 Excel vba 代码不起作用,但 Sheet1.Range 工作正常。为什么?

javascript - AngularJS 中的 $injector.unpr 错误

javascript - 如何在数组内的索引中添加元素? ReactJs

javascript - 内部/模块/cjs/loader.js :888 throw err;

javascript - 如何在express.js中编写查找和更新查询?