0

我有 2 个 CRM - 一个是基于 Infusionsoft 构建的,另一个是自定义的。

我想在这 2 个 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 专家的帮助。请指教。可能吗?

4

2 回答 2

3

每个 Infusionsoft 帐户都有一个 API 密钥,允许您调用 API。

以下是获取 Infusionsoft 应用程序的 API 密钥的说明。 http://ug.infusionsoft.com/article/AA-00442/0/Infusionsoft-API-Key.html

获得密钥后,您可以使用 PHP SKD 拨打电话和添加联系人。这是 infusionosft 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>';
}
于 2015-12-05T02:32:55.267 回答
0

实际上,您不需要在 oAuth2 中每次都要求您的客户进行身份验证。只有应用程序的所有者需要进行一次身份验证。它确实涉及存储令牌(在数据库中或可能是 php 文件中),以便您可以刷新令牌,因为令牌在 8 小时后过期。

上面的代码是正确的,但它不存储令牌,因此您需要在会话关闭后进行身份验证。

http://community.infusionsoft.com/showthread.php/19009-OAuth2-unattended-authentication-process?highlight=storing+token

这是一个很好的链接,可以帮助您走上正确的道路,讨论为您想要的流程类型存储令牌。

于 2016-01-16T22:06:11.897 回答