如何在 Wordpress PHP 文件中隐藏外部 API 键?
How can I hide an external API key in a Wordpress PHP file?
我花了几个小时试图研究和解决这个问题,但不幸的是我仍在苦苦挣扎。
我在 Wordpress 中创建了一个自定义 'courses' post 类型,涉及使用嵌入式 Calendly 事件注册。当发生事件注册时,我正在使用 Calendly 嵌入 API 到 notify the parent window。通知负载提供事件的 URI,然后我想使用 Calendly API 和 return name 的事件。我正在努力将 API 键隐藏在 header:
"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>
您应该为 API 密钥使用 dotenv (.env) 文件。
您可以通过 vlucas/phpdotenv 软件包安装对 dotenv (.env) 的支持,并在您的服务器上使用 PHP 的 Composer 软件包管理器。
更简单的选择 - 如果你没有你所说的经验,那就是使用 WordPress 插件 dontenv,你将创建 .env 文件并在里面写 MY_API_KEY=123456 ,然后在您的代码中,您可以使用 getenv('MY_API_KEY');
检索此 .env 密钥
这是针对 PHP 但你的代码是 JS,所以你应该安装 npm 包管理器然后 运行 npm i dontenv
然后在你的代码 Bearer ${process.env.MY_API_KEY}
.
此外,不应在 GitHub 上传 .env 文件。
我花了几个小时试图研究和解决这个问题,但不幸的是我仍在苦苦挣扎。
我在 Wordpress 中创建了一个自定义 'courses' post 类型,涉及使用嵌入式 Calendly 事件注册。当发生事件注册时,我正在使用 Calendly 嵌入 API 到 notify the parent window。通知负载提供事件的 URI,然后我想使用 Calendly API 和 return name 的事件。我正在努力将 API 键隐藏在 header:
"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>
您应该为 API 密钥使用 dotenv (.env) 文件。
您可以通过 vlucas/phpdotenv 软件包安装对 dotenv (.env) 的支持,并在您的服务器上使用 PHP 的 Composer 软件包管理器。
更简单的选择 - 如果你没有你所说的经验,那就是使用 WordPress 插件 dontenv,你将创建 .env 文件并在里面写 MY_API_KEY=123456 ,然后在您的代码中,您可以使用 getenv('MY_API_KEY');
检索此 .env 密钥这是针对 PHP 但你的代码是 JS,所以你应该安装 npm 包管理器然后 运行 npm i dontenv
然后在你的代码 Bearer ${process.env.MY_API_KEY}
.
此外,不应在 GitHub 上传 .env 文件。