0

我花了几个小时试图研究和解决这个问题,但不幸的是仍在苦苦挣扎。

我在 Wordpress 中创建了一个自定义的“课程”帖子类型,其中涉及使用嵌入式 Calendly 事件注册。我正在使用 Calendly 嵌入 API在发生事件注册时通知父窗口。通知负载提供事件的URI,然后我想使用 Calendly API 查找并返回事件的名称。我正在努力将 API 密钥隐藏在标头中:

    "Content-Type": "application/json",
    "Authorization": "Bearer MY_API_KEY"
  }

我试图在 wpconfig 中添加一行来定义密钥:

define( 'CALENDLY_KEY', '**key**' );

但是我不知道如何在我的函数中使用它而不通过'echo'暴露它。

任何建议将不胜感激。

下面的扩展代码:

<!-- Calendly widget script -->
<script type="text/javascript" src="https://assets.calendly.com/assets/external/widget.js" async></script>

<script>function isCalendlyEvent(e) {
  return e.data.event &&
         e.data.event.indexOf('calendly') === 0;
};
 
window.addEventListener(
  'message',
  function(e) {
    if (isCalendlyEvent(e)) {
        if (e.data.event == "calendly.event_scheduled") {
            console.log("event scheduled!");
            let event_uri = e.data.payload.event.uri;
            console.log(event_uri);

            fetch(event_uri, {
  "method": "GET",
  "headers": {
    "Content-Type": "application/json",
    "Authorization": "Bearer MY_API_KEY"
  }
})
.then(response => response.json())
  .then((json) => {
    console.log(json);
    let ordered_course = json.resource.name;
    console.log(ordered_course);

  })



        }
      console.log(e.data);
    }
  }
);</script>
4

1 回答 1

1

您应该使用 dotenv (.env) 文件作为 API 密钥。

您可以通过vlucas/phpdotenv包安装对 dotenv (.env) 的支持,并在您的服务器上使用 PHP 的 Composer 包管理器。

更简单的选择 - 如果你没有你所说的经验,是使用 WordPress 插件dontenv,这你将创建 .env 文件,你将在里面写 MY_API_KEY=123456,然后在你的代码中,你可以检索这个 .env 密钥通过使用 getenv('MY_API_KEY');

这适用于 PHP,但您的代码是 JS,因此您应该安装 npm 包管理器,npm i dontenv然后在您的代码中运行Bearer ${process.env.MY_API_KEY}

此外,不应将 .env 文件上传到 GitHub。

于 2022-01-21T22:32:20.967 回答