我有两个CRM - 一个是在Infusionsoft上构建的,另一个是自定义的。
我想同步这两个CRMS之间的联系人。它只是从定制的一个到Infusionsoft的单向。因此,当客户在自定义CRM上注册时,我想将他/她的信息添加到Infusionsoft CRM而不让客户意识到它=)
Infusionsoft API使用oAuth2身份验证,理论上这意味着" I have to ask the user to enter my username and password for Infusionsoft to get them added to my Infusionsoft CRM
" - 据我了解他们的API,这很荒谬。
我确实相信我想做的事情并非不可能......也许我错了。在最坏的情况下,我可以使用PhantomJS来传递oAuth身份验证。如果存在任何其他解决方案,我不想使用PhantomJS。我需要Infusionsoft专家的帮助。请指教。有可能吗?
答案 0 :(得分:3)
每个Infusionsoft帐户都有一个API密钥,允许您调用API。
以下是获取Infusionsoft应用程序API密钥的说明。 http://ug.infusionsoft.com/article/AA-00442/0/Infusionsoft-API-Key.html
获得密钥后,您可以使用PHP SKD拨打电话和添加联系人。这是一个输入php SDK的链接: https://github.com/infusionsoft/infusionsoft-php
以下是添加联系人文档的链接以及php示例: https://developer.infusionsoft.com/docs/xml-rpc/#contact
https://github.com/infusionsoft/API-Sample-Code/blob/master/PHP/ContactService-Sample.php
修改强> 看起来他们最终会在未来使用帐户级密钥,而这些密钥不需要您使用oauth。 https://developer.infusionsoft.com/2014/07/03/simplifying-infusionsoft-authentication-with-oauth2/
有很多关于如何在Infusionsoft上使用oauth的例子: https://developer.infusionsoft.com/docs/xml-rpc/#contact
点击右侧的PHP,您将看到如何获取令牌并创建与API的联系
github上的README还有更多的例子:
https://github.com/infusionsoft/infusionsoft-php/blob/master/README.md
<强>认证强>
$infusionsoft = new \Infusionsoft\Infusionsoft(array(
'clientId' => 'XXXXXXXXXXXXXXXXXXXXXXXX',
'clientSecret' => 'XXXXXXXXXX',
'redirectUri' => 'http://example.com/',
));
// 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>';
}
答案 1 :(得分:0)
实际上,您无需每次在oAuth2中询问客户身份验证。只有应用程序的所有者需要进行一次身份验证。它确实涉及存储令牌(在数据库中或者可能是php文件中),以便您可以刷新令牌,因为令牌在8小时后过期。
上面的代码是正确的,但它不存储令牌,因此您需要在会话结束后进行身份验证。
这是一个很好的链接,可以帮助您走上正确的道路,讨论如何为您想要的流程类型存储令牌。