我是 infusionsoft 的新手。目前我已经订阅contact.add
和contact.edit
webhook,但两者都有“未验证”状态。因此,我使用下面的 api 来验证它。但我无法验证。
https://api.infusionsoft.com/crm/rest/v1/hooks/{key}/verify?access_token={token}
我也得到了200 OK的回复。
为什么我无法验证?
我是 infusionsoft 的新手。目前我已经订阅contact.add
和contact.edit
webhook,但两者都有“未验证”状态。因此,我使用下面的 api 来验证它。但我无法验证。
https://api.infusionsoft.com/crm/rest/v1/hooks/{key}/verify?access_token={token}
我也得到了200 OK的回复。
为什么我无法验证?
I had successfully verified web hooks with the below way,
1. resthookManager.php
<?php
session_start();
//session_destroy();
require_once '../vendor/autoload.php';
$infusionsoft = new \Infusionsoft\Infusionsoft(array(
'clientId' => '',
'clientSecret' => '',
'redirectUri' => '',
));
// By default, the SDK uses the Guzzle HTTP library for requests. To use CURL,
// you can change the HTTP client by using following line:
// $infusionsoft->setHttpClient(new \Infusionsoft\Http\CurlClient());
// If the serialized token is available in the session storage, we tell the SDK
// to use that token for subsequent requests.
if (isset($_SESSION['token'])) {
$infusionsoft->setToken(unserialize($_SESSION['token']));
}
// If we are returning from Infusionsoft we need to exchange the code for an
// access token.
if (isset($_GET['code']) and !$infusionsoft->getToken()) {
$infusionsoft->requestAccessToken($_GET['code']);
$_SESSION['token'] = serialize($infusionsoft->getToken());
}
function resthookManager($infusionsoft) {
$resthooks = $infusionsoft->resthooks();
// first, create a new task
$resthook = $resthooks->create([
'eventKey' => 'contact.add',
'hookUrl' => 'http://infusionsoft.app/verifyRestHook.php'
]);
var_dump($resthook);
$resthook = $resthooks->find($resthook->id)->verify();
return $resthook;
}
if ($infusionsoft->getToken()) {
try {
$resthook = resthookManager($infusionsoft);
}
catch (\Infusionsoft\TokenExpiredException $e) {
// If the request fails due to an expired access token, we can refresh
// the token and then do the request again.
$infusionsoft->refreshAccessToken();
// Save the serialized token to the current session for subsequent requests
$_SESSION['token'] = serialize($infusionsoft->getToken());
$resthook = resthookManager($infusionsoft);
}
var_dump($resthook);
}
else {
echo '<a href="' . $infusionsoft->getAuthorizationUrl() . '">Click here to authorize</a>';
}
2. verifyRestHook.php
<?php
session_start();
require_once '../vendor/autoload.php';
$infusionsoft = new \Infusionsoft\Infusionsoft(array(
'clientId' => '',
'clientSecret' => '',
'redirectUri' => '',
));
// In order to verify the endpoint, we need to return the X-Hook-Secret header.
// By default, the autoverify() function will set the proper header, but if you
// pass false as the first argument to autoverify(false) the function will simply
// return the header value for you to set as you please (handy if you are using
// a PHP class or framework that manages requests for you
$infusionsoft->resthooks()->autoverify();
return;
Thanks..