2

我是 infusionsoft 的新手。目前我已经订阅contact.addcontact.editwebhook,但两者都有“未验证”状态。因此,我使用下面的 api 来验证它。但我无法验证。

https://api.infusionsoft.com/crm/rest/v1/hooks/{key}/verify?access_token={token}

我也得到了200 OK的回复。

为什么我无法验证?

4

1 回答 1

1
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..
于 2016-12-03T08:38:57.900 回答