Highrise API返回错误代码500

时间:2014-01-23 07:26:59

标签: php api highrise 37-signals

我正在尝试将PHP Wrapper用于此处的Highrise API:

https://github.com/ignaciovazquez/Highrise-PHP-Api

我需要为HighrisePerson对象设置自定义字段。根据代码,这应该非常简单......

$person->setCustomField("Field Name", $value); // Pulled almost straight out of the documentation

不幸的是,当我尝试使用$person->save();将其保存回高层时,我收到以下错误:

Uncaught exception 'Exception' with message 'API for Person returned Status Code: 500 Expected Code: 200'

因此错误不在代码中...... Highrise只是不接受自定义字段。有什么想法为什么?

2 个答案:

答案 0 :(得分:0)

要使用37signals整个Highrise-PHP-Api,您应该提供帐户名称和访问令牌;

$hr = new HighriseAPI();
$hr->setAccount("accountname");
$hr->setToken("token");

然后你可以执行你的其他功能

$person->setCustomField("Field Name", $value);

如果你仔细查看这个api的测试,你会看到;

if (count($argv) != 3)
        die("Usage: php users.test.php [account-name] [access-token]\n");

答案 1 :(得分:0)

好的......我想通了......

在API中有以下内容:

$ person-> setCustomField(“Field Name”,$ value);

在Highrise中创建一个新的自定义字段。因此,如果还没有名为“Field Name”的自定义字段,则会创建它。如果该字段已存在,则返回500错误。

据我所知,无法使用该包装器设置现有字段的值。你只能创建新的字段,这是一种jank。

我找到了一个对我来说非常好的封装器。它在这里托管:https://github.com/AppSaloon/Highrise-PHP-Api

这个用法令人困惑,花了一些时间才弄明白。

基本上你想搜索Highrise中的所有自定义字段。找到想要的那个后,为它指定必要的值......所以代码如下所示:

// Load up all the custom fields out of Highrise
    $cfields = $highrise->findAllCustomfields();

// Search each custom field until we find the "Field Name" one. When we do, add it to our Highrise Person.
    foreach ($cfields as $c) {
        if ($c->getSubjectFieldLabel() == "Field Name") 
        {
            // Assign that custom field to the person
            $highrisePerson->addCustomfield($c, "Field Value");
        }
    }

我希望这可以帮助遇到同样问题的其他人。我从另一个Stack Overflow问题中发现了分叉的PHP包装器,但他们从来都无法使自定义字段工作。