如何使用trello webhook callbackURL指向php codeigniter中的localhost?

时间:2018-04-17 06:45:11

标签: javascript php codeigniter trello

我在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);
}

enter image description here

1 个答案:

答案 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上进行的呼叫并重试其中的一些。