1

我需要在没有用户交互的情况下访问 infusionsoft api。我不想让用户点击一个点击,所以我可以得到一个令牌。可能吗?

$infusionsoft = new Infusionsoft\Infusionsoft(array(
    'clientId'     => '...',
    'clientSecret' => '...',
    'redirectUri'  => '...',
));

// 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']);
}

if ($infusionsoft->getToken()) {
    // Save the serialized token to the current session for subsequent requests
    $_SESSION['token'] = serialize($infusionsoft->getToken());

    // MAKE INFUSIONSOFT REQUEST
} else {
    echo '<a href="' . $infusionsoft->getAuthorizationUrl() . '">Click here to authorize</a>';
}
4

2 回答 2

0

制作3个文件

  1. Request_new_token.php。它类似于您的代码(只需要运行一次),但您必须将令牌保存到数据库或 txt 文件中。

    //Convert object to string
    $token = serialize($infusionsoft->requestAccessToken($_GET['code']));
    //Update the token in database.
    $update = new Update("systemsettings");
    $update->addColumn('systemsettings_strvalue', $token);
    $update->run(1);
    exit;    
    
  2. 刷新_token.php。使用保存的令牌,您需要在 21 小时内刷新它。我建议使用 cronjob 在服务器后端自动运行它。

  3. General_request.php(取决于您的系统偏好)。每当您需要向 GET/PUT/POST 发出单个请求时,您只需启动 infusionsoft 对象并将令牌设置为数据库中的新对象。

祝你好运!

于 2017-10-31T07:00:49.987 回答
0

如果您希望与 API 交互而不是通过较新的 oAuth 方法获得访问权限,则需要使用已折旧的旧 API,该 API 使用来自实际 Infusionsoft 应用程序的 API 密钥。好处是,除非用户更改他们的 API 密钥,否则您不需要“更新”或“刷新”令牌,也不需要用户点击授权他们的应用程序。

当然,最大的缺点是这个旧 API 已被贬低,所有新应用程序都需要使用 oAuth。

您无法引导用户完成 oAuth 身份验证流程的用例是什么?

于 2016-02-03T19:05:01.833 回答