我需要在没有用户交互的情况下访问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>';
}
答案 0 :(得分:0)
如果您希望与API进行互动而无法通过较新的oAuth方法获取访问权限,则您需要使用使用API key from the actual Infusionsoft application的折旧旧版API。好处是,除非用户更改其API密钥,否则您不需要更新&#34;或者&#34;刷新&#34;令牌,您不需要用户点击授权他们的应用。
当然,最大的缺点是这个旧API已被折旧,所有新应用程序都需要使用oAuth。
您可以通过oAuth身份验证流程引导用户的用例是什么?
答案 1 :(得分:0)
制作3个文件
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;
Refresh_token.php。使用已保存的令牌,您需要在21小时内刷新它。我建议使用cronjob在服务器后端自动运行它。
General_request.php(根据您的系统偏好设置)。每当您需要向GET / PUT / POST发出单个请求时,您只需启动infusionsoft对象并将令牌设置为数据库中的新对象。