我正在开发一个Shopify应用程序,通过Shopify API设置"产品/创建"Webhook.
虽然Webhook正在将POST发送到正确的地址而没有任何问题,但似乎它没有提供已为其创建产品的商店ID.这是一个问题,因为我需要存储商店及其产品的元数据.我需要确保商店与其产品之间的数据库中存在链接.
有没有办法:
找到通过Webhook提供给我的产品的商店ID
使用webhook发送请求时返回的自定义数据配置Webhook,以便我可以在创建它时强制它返回商店ID
提前致谢!
我正在编写一个需要使用 Dropbox 网络钩子的程序。我还没有找到任何已经到位的 Go 实现,所以我决定写我的。不幸的是,它似乎不起作用。
我认为这里的问题是hmac,因为我很可能做错了什么,但我似乎无法理解这里的问题到底在哪里。任何的想法?
以下是我所拥有的:
package dboxwebhook
import (
"bytes"
"crypto/hmac"
"crypto/sha256"
"errors"
"io"
"io/ioutil"
"log"
)
type Signature struct {
AppSecret []byte
Signature []byte
}
func (w *Signature) Check(reqBody io.ReadCloser) error {
if bytes.Compare(w.Signature, nil) == 0 {
return errors.New("DropBox signature doesnt exist")
}
// building HMAC key (https://golang.org/pkg/crypto/hmac/)
mac := hmac.New(sha256.New, w.AppSecret)
requestBody, err := ioutil.ReadAll(reqBody)
if err != nil {
return err
}
mac.Write(requestBody)
expectedMac := mac.Sum(nil)
log.Println(w.AppSecret)
log.Println(expectedMac)
log.Println(w.Signature)
// compare if …Run Code Online (Sandbox Code Playgroud) 我有一个类似于Emulate github service hooks wih curl 的需求,但我也在我的 webhook 中使用了一个秘密,但它无法正常工作。
这是我作为接收后挂钩所做的:
#!/bin/bash
while read oldrev newrev refname; do
tmpfile=$(mktemp --suffix=.json)
cat << EOF > $tmpfile
{
"ref": "${refname}"
}
EOF
sig=$(cat "${tmpfile}" | openssl dgst -sha1 -hmac "${WEBHOOK_SECRET}" | awk '{print "X-Hub-Signature: sha1="$2}')
curl -X POST -H "Content-Type: application/json" -H "${sig}" --data-urlencode "payload@${tmpfile}" http://webhook:9000/hooks/r10k
rm -f "${tmpfile}"
done
Run Code Online (Sandbox Code Playgroud)
webhook(与 github 一起使用)抱怨签名错误。
我究竟做错了什么?
我写了一个webhook来集成到chat(slack/mattermost api)中.
启动和运行的最简单方法是一个快速的PHP脚本,如下所示:
<?php
$token = $_POST["token"];
$arg = $_POST["text"];
$output = exec("./webhook_script.sh {$token} {$arg}");
Run Code Online (Sandbox Code Playgroud)
目前,脚本工作正常,但我担心有人可以恶意地执行http POST,其中查询参数text(脚本:) $arg具有某种注入攻击.
例: http://myserver/webhook.php?token=abc&text=123;rm -rf *
因此$arg变得123; rm -rf和exec命令执行恶意rm -rf *
这与我熟悉的"sql注入"本质上类似,但我不确定如何使bash脚本安全...
是以某种方式引用参数,或者使用a regex来检查脚本参数是一件简单的事情吗?
我正在使用基于 SendGrid API v3 的 Webhook。Webhook 完全设置了 SendGrid 发布到的端点,但我需要能够接收解析的数据并将其存储在使用 PHP 的数据库中,但不知道如何做到这一点。
我在启动数据检索或 POST 之前使用过 API,但是当 API 服务器是一个 POST 时,我如何捕获通过 Webhook 端点解析的数据?到目前为止,我有一些简单的方法,但我真的不清楚如何解决这个问题:
<?php
$json = file_get_contents('https://example.com/webhook.php');
$json_decoded = json_decode($json, true);
$var_dump(json_decoded);
?>
Run Code Online (Sandbox Code Playgroud)
我曾尝试向主持人发送多封电子邮件,但每次拨打此电话时我都会返回NULL.
假设我的 Web 应用程序在本地托管在http://localhost:9090/myapp
如何让 ngrok 指向这个 URL?
因为,如果我使用ngrok http 9090它实际上指向 localhost:9090。
我可以使用哪些函数将所有子模块(本地 repo)同步/初始化/更新到远程分支中的版本?
“同步”(我们称之为,我不是说 git sync!)也必须在以下情况下工作:
本质上,我希望本地 repo 始终与远程分支的版本完全相同。每当我更改子模块中的某些内容时,都无需过多摆弄。所以没有手动ssh'ing到服务器来初始化一个新的子模块,只为了部署脚本工作......
这可以在不克隆(又名传输)整个存储库的情况下实现吗?我选择 git 是为了有一种安全、快速的方式来部署我的源代码。但我能想到的唯一选择是git clone --recursive在它们各自的标签下做一个完整的和检查子模块。在这种情况下,rsync 可能会在同步文件方面做得更好。
我不确定我是否正确地理解了如何使用webhooks,但是:我想以不同的渠道或不同的用户(而不是一次)发送消息,而无需参与该对话。
我的问题:我只能为特定用户创建webhooks,所以我最终为每个用户/频道拥有唯一的URL?如果我使用我所使用的库中的“ channel”参数或什至“ setReceipent”方法之类的东西,它不会有任何效果,只有为webhook创建的频道/用户会收到消息。
我需要使用API访问权限还是可以使用Webhooks满足我的需求?
(我已经在微软论坛上问过,但没有得到答案。)
我有一个使用私有注册表且启用了持续部署的应用服务。该应用程序运行正常,但持续部署的 Webhook URL 不起作用。
这是对 webhook 的 HTTP GET 请求的输出:
$ curl https://\$MySiteName:SomeLongPassword@mysite.scm.azurewebsites.net/docker/hook
"No route registered for '/docker/hook'"
Run Code Online (Sandbox Code Playgroud)
Microsoft 论坛中有人告诉我尝试 POST 请求,因此输出如下:
$ curl -X POST https://\$MySiteName:SomeLongPassword@mysite.scm.azurewebsites.net/docker/hook
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
<HTML><HEAD><TITLE>Length Required</TITLE>
<META HTTP-EQUIV="Content-Type" Content="text/html; charset=us-ascii"></HEAD>
<BODY><h2>Length Required</h2>
<hr><p>HTTP Error 411. The request must be chunked or have a content length.</p>
</BODY></HTML>
Run Code Online (Sandbox Code Playgroud)
我还没有在 Microsoft Azure 文档中的任何地方找到如何使用 webhook。
azure webhooks continuous-deployment docker azure-web-app-service
我正在尝试从 Stripe 设置一个 webhook 来处理该payment_intent.succeeded事件,但出现异常。这是我来自 Node 后端的代码(我已经提取了我希望的所有相关部分。如果还需要其他任何东西,请告诉我):
const stripeWebHookSecret = 'whsec_WA0Rh4vAD3z0rMWy4kv2p6XXXXXXXXXXX';
import express from 'express';
const app = express();
app.use(bodyParser.urlencoded({ extended:true }));
app.use(bodyParser.json());
app.use(session({ <some params here> }));
const openRouter = express.Router();
registerOpenPaymentRoutes(openRouter);
app.use('/open', openRouter);
Run Code Online (Sandbox Code Playgroud)
的实现registerOpenPaymentRoutes如下所示:
export const registerOpenPaymentRoutes = (router) => {
router.post('/payment/intent/webhook', bodyParser.raw({type: 'application/json'}), (req, res) => {
let signature = req.headers['stripe-signature'];
try {
let event = stripe.webhooks.constructEvent(req.body, signature, stripeWebHookSecret);
switch(event.type){
case 'payment_intent.succeeded':
let intent = event.data.object;
res.json({ message: 'Everything went smooth!', intent }); …Run Code Online (Sandbox Code Playgroud)