infusionsoft - 如何在不点击链接的情况下获取令牌?

时间:2016-01-22 08:48:24

标签: infusionsoft

我需要在没有用户交互的情况下访问infusionsoft api。我不希望让用户点击一下,这样我就可以得到一个tocken。有可能吗?

$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>';
}

2 个答案:

答案 0 :(得分:0)

如果您希望与API进行互动而无法通过较新的oAuth方法获取访问权限,则您需要使用使用API key from the actual Infusionsoft application的折旧旧版API。好处是,除非用户更改其API密钥,否则您不需要更新&#34;或者&#34;刷新&#34;令牌,您不需要用户点击授权他们的应用。

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

您可以通过oAuth身份验证流程引导用户的用例是什么?

答案 1 :(得分: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. Refresh_token.php。使用已保存的令牌,您需要在21小时内刷新它。我建议使用cronjob在服务器后端自动运行它。

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

  4. 祝你好运!