Partkeepr: 在 v1.2.0 中设置 Octopart 的问题

创建于 2017-02-16  ·  11评论  ·  资料来源: partkeepr/PartKeepr

系统信息

  • PartKeepr 版本:v1.2.0
  • 可在演示系统上重现:否(因为我无法修改演示系统上的配置,而且 Octopart 集成似乎在那里运行。)

如何繁殖

我对 Octopart API 密钥如何被推送到系统的理解非常有限,所以我在写这篇文章时做了一些假设(其中一些可能不正确),所以请耐心等待。 此外,我将在此错误报告中使用“xxxxxxxx”代替我真正的 Octopart API 密钥。

我在尝试为我的 PartKeepr v1.2.0 安装设置 Octopart 支持时遇到了一个问题。 我开始只是按照 app/config/parameters.php.dist 中的说明开始,其中说在 parameters.php 文件中设置 Octopart API 属性:

$container->setParameter('partkeepr.octopart.apikey', 'xxxxxxxx')`

这样做似乎没有效果,也没有在 PartKeepr 中启用 Octopart 支持。 最终,我返回并再次运行 web/setup,然后在“检索现有配置”步骤失败,并显示错误消息“身份验证密钥无效”。 一时兴起,我将 partkeepr.octopart.apikey 属性设置如下:

$container->setParameter('partkeepr.octopart.apikey', 'https://octopart.com/api/v3/parts/match?apikey='xxxxxxxx')`

然后我重新运行了 web/setup 工具,并且能够成功地通过“检索现有配置”步骤而没有任何错误,然后能够成功地继续完成其余的设置过程; 然而,在重新登录 PartKeepr 后,拉起项目的详细信息窗口并单击 Octopart 按钮后,Octopart 窗口出现但完全为空(注意 UI 中没有显示错误消息。)快速浏览 partkeepr。日志显示以下错误:

request.CRITICAL: Uncaught PHP Exception Guzzle\Http\Exception\ClientErrorResponseException: "Client error response [status code] 401 [reason phrase] Unauthorized [url] http://octopart.com/api/v3/parts/search?apikey=https%3A%2F%2Foctopart.com%2Fapi%2Fv3%2Fparts%2Fmatch%3Fapikey%3Dxxxxxxxx&q=STD950BLK&start=0&include%5B0%5D=short_description&include%5B1%5D=specs&include%5B2%5D=datasheets&limit=20" at /var/www/partkeepr.domain.com/vendor/guzzle/guzzle/src/Guzzle/Http/Exception/BadResponseException.php line 43 {"exception":"[object] (Guzzle\\Http\\Exception\\ClientErrorResponseException(code: 0): Client error response\n[status code] 401\n[reason phrase] Unauthorized\n[url] http://octopart.com/api/v3/parts/search?apikey=https%3A%2F%2Foctopart.com%2Fapi%2Fv3%2Fparts%2Fmatch%3Fapikey%3Dxxxxxxxx&q=STD950BLK&start=0&include%5B0%5D=short_description&include%5B1%5D=specs&include%5B2%5D=datasheets&limit=20 at /var/www/partkeepr.domain.com/vendor/guzzle/guzzle/src/Guzzle/Http/Exception/BadResponseException.php:43)"} []

从上面的日志消息来看,问题似乎是 web/setup 的 apikey 验证/验证问题。 似乎该流程需要完整的 Octopart URL 端点(将 apikey 作为 URL 参数包含在内)才能进行验证; 但是,PartKeepr 本身只需要在运行时指定的独立 apikey 字符串进行替换,这是有道理的,因为 API 的 URL 在 /src/PartKeepr/OctoPartBundle/Services/OctoPartService.php 的 const OCTOPART_ENDPOINT 中指定。

对此的解决方法(至少是我目前使用的方法)是将完整的 Octopart API 端点(API 密钥作为 URL 参数包含在内)中用于设置过程,这似乎需要成功完成以说服 PartKeepr 启用 Octopart 支持。 然后我修改了 /src/PartKeepr/OctoPartBundle/Services/OctoPartService.php 文件,将 apiKey 分配给一个字符串文字,代表我的 Octopart API 密钥(如下所示):

public function __construct($apiKey) { $this->apiKey = "xxxxxxxx"; }

我认为解决此问题的方法是更正 web/setup 实用程序中 API 密钥的验证,但我不确定。 如果我误解了什么或这个过程是如何运作的,我深表歉意。

干杯!

最有用的评论

你好!
我在与 Octopart 集成时遇到了问题。 我在参数 php 中插入了我的 API 密钥,再次运行 setupa,但 Octopart 搜索窃取不起作用。 所以我遵循@tracklogic的建议并删除了缓存:
须藤 rm -rf 应用程序/缓存/*
然后我再次运行设置,现在一切正常!

所有11条评论

由于有几个人设置了 OctoPart 集成,我不认为实现是错误的,而是您的 API 密钥。

我想我知道问题是什么。

安装程序不会验证 OctoPart API 密钥。 这导致您假设您需要输入完整的 OctoPart URI 而不是密钥本身,这会导致检索数据时出错。

如果app/authkey.php的密钥与您输入的不相等,则显示Invalid Authentication Key

我在安装 Octopart 时也遇到了问题。
我所做的是重新运行安装过程(在保存 API 密钥后)。 然后 Octopart 搜索按预期工作。

我以前做过这个……它在缓存目录的某个地方存储了 OctoPart 键(或没有它)——我刚刚删除了缓存文件夹并刷新了 PartKeepr,它发现我现在指定了一个 OctoPart 键——位虽然它告诉我我没有在 parameters.php 中指定一个,但我还是头疼了一阵子!

@WickedAx你能提供额外的反馈吗?

没有反馈,关闭

长时间没有反馈,关闭问题。

如果您有其他信息,请随时重新打开。

你好!
我在与 Octopart 集成时遇到了问题。 我在参数 php 中插入了我的 API 密钥,再次运行 setupa,但 Octopart 搜索窃取不起作用。 所以我遵循@tracklogic的建议并删除了缓存:
须藤 rm -rf 应用程序/缓存/*
然后我再次运行设置,现在一切正常!

同样的问题,如上所述删除缓存已经做到了。

我已经尝试了上面的技巧,删除缓存并再次运行安装程序。
我认为我的问题出在我的 octopart API 密钥上,Octopart 在文本旁边列出了 API 密钥,上面写着

正在审核您对 Octopart API 密钥的请求。

发布非活动 API 密钥对我来说感觉很奇怪,希望这就是我遇到的问题。
最好有一些技术或更好的错误消息来告知 API 调用失败的原因。

有没有办法打开调试或除 apache 日志之外的任何其他日志文件?

@lhovo该评论还指出,如果您有任何疑问,必须联系[email protected] 。 例如; 如果审核时间过长; 联系他们。 在不再接受审查之前,它不会起作用。

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

mctomaszek picture mctomaszek  ·  20评论

JoarGjersund picture JoarGjersund  ·  12评论

dani2bunny picture dani2bunny  ·  24评论

Drachenkaetzchen picture Drachenkaetzchen  ·  11评论

baradhili picture baradhili  ·  17评论