我在codeigniter中创建了一个基于Web的系统,并使用其API服务创建了一些trello集成。我希望实现类似的功能,如果在特定的主板上创建了新卡,它还会在我的系统中发送一条通知,即创建一张新卡。我开始阅读trello webhooks中的一些文档,但我无法理解。我是以正确的方式前进吗?如果我提供一个指向localhost callbackURL: "localhost/main_controller/trelloCallback"
的callbackURL,它会有效吗?但是,下面的代码返回400状态。请帮我。谢谢。
的Javascript
$.post("https://api.trello.com/1/tokens/5db4c9fbb5b2kaf8420771072b203616f3874fa92a4c57f0c796cf90819fa05c/webhooks?key=a2a93deccc7064dek5f4011c2e9810d6", {
description: "My first webhook",
callbackURL: "localhost/dti_infosys/main_controller/trelloCallback",
idModel: "5a73c33ad9a2dk1b473612eb",
});
main_controller / trelloCallback
function trelloCallback() {
$json = file_get_contents('php://input');
$action = json_decode($json,true);
var_dump($action);
}
答案 0 :(得分:1)
我知道这是一个老问题,但是这种使用外部工具访问本地主机进行开发的用例非常普遍。
因此,对于希望基于云的服务能够调用本地端点的任何人(包括OP),您都可以使用ngrok之类的工具。
基本上,它会设置一个可通过Internet访问的URL,该URL会将所有呼叫转发到您的本地端口之一。
比方说,运行PHP的本地网络服务器在计算机上的8000端口上进行监听。
在安装了ngrok之后,您可以执行以下命令:
$> ngrok http 8000
这将设置转发会话:
ngrok by @inconshreveable
Session Status online
Session Expires 6 hours, 21 minutes
Version 2.3.35
Region United States (us)
Web Interface http://127.0.0.1:4040
Forwarding http://b5d44737.ngrok.io -> http://localhost:8000
Forwarding https://b5d44737.ngrok.io -> http://localhost:8000
然后,您可以使用指向Forwarding
的任何ngrok.io
地址通过Internet访问本地Web服务器,这意味着如果要使用这些地址中的任何一个而不是{{1 }}使用外部工具,它将可以间接调用您的本地端点。
对于您来说,创建Trello Webhook的JavaScript调用为:
localhost
不过有一点警告:对于ngrok,$.post("https://api.trello.com/1/tokens/<YOUR_ACCESS_TOKEN>/webhooks?key=<YOUR_API_KEY>", {
description: "My first webhook",
callbackURL: "https://b5d44737.ngrok.io/dti_infosys/main_controller/trelloCallback",
idModel: "<YOUR_MODEL_ID>",
});
URL在每次会话启动时都是随机的,这意味着您在一个会话上创建的webhooks在另一个会话上将不起作用会话,因为那里的callbacksUrl不再有效。
请注意,您可以订阅付费计划以“保留” ngrok子域,并使会话之间具有URL一致性。或者,您也可以使用新的预定义URL手动更新webhooks callbackUrl。
无论如何,我希望这会有所帮助!
P.S .:转发会话运行时,您可以访问Forwarding
来检查在转发URL上进行的呼叫并重试其中的一些。