多次呼叫后Podio认证失败


Podio authentication fails after multiple calls

我已经使用Podio API将近一年了,很少遇到问题,但最近我遇到了一个我无法解决的问题。我甚至不知道如何测试正在发生的事情。当一个项目被创建时,我有一个webhook到一个脚本,它将发送一个http GET请求到一个项目,并执行一些功能。脚本运行得很好,从来没有遇到任何问题,除非我快速连续创建一些项目(15左右)。如果我这样做,某个号码将成功完成,然后我将突然在每次新调用时得到以下错误:

2016-11-14 16:41:14 401 GET /item/514610204
2016-11-14 16:41:14 Reponse: {"error_parameters":{},"error_detail":null,"error_propagate":false,"request":{"url":"http:'/'/api.podio.com'/item'/514610204","query_string":"","method":"GET "},"error_description":"invalid_request","error":"unauthorized"}

如果我等待一分钟左右,它又开始工作了。

我正在使用用户名和密码进行身份验证。有人知道发生了什么或者如何检查发生了什么吗?在这种情况下,podio.log没有帮助。

(更新)问题是我遇到了身份验证请求速率限制,因为我没有使用会话管理器。我现在正在尝试这样做,但有问题。我使用Redis设置的代码如下:

require_once 'models/PodioRedisSession.php';
Podio::set_debug(true, 'file');
Podio::setup($client_id, $client_secret,array(
  "session_manager" => "PodioRedisSession"
));
Podio::$auth_type = array(
  "type" => "password",
  "identifier" => "MY_EMAIL"
);
Podio::$oauth = self::$session_manager->get(Podio::$auth_type); //ERROR IS ON THIS LINE
if (!Podio::is_authenticated()) {
  Podio::authenticate_with_password('MY_EMAIL', 'MY_PASSWORD');
}
不能访问self::当没有活动的类作用域我是否在正确的轨道上让会话管理器使用密码身份验证?错误发生在注释行。

(更新)我终于能让系统正常运行了。上面的代码是正确的。服务器只需要重置(Windows服务器)Redis生效

如果您的脚本在每次创建项时都对Podio进行身份验证,则可能会遇到Podio API对身份验证请求的速率限制。

你是否在每次脚本被你的webhook触发时生成一个新的认证令牌?Podio客户端库包括一些关于会话管理的通用文档,这些文档可能会很有用!

为了避免达到这个限制,您应该使用API进行一次身份验证,然后存储从API返回的oauth和刷新令牌。Redis可以做到这一点。然后对所有后续请求使用oauth令牌。

这里有一个例子[1]

您的宣誓令牌有效期最多为28天。当它不再有效时,您将需要使用第一次身份验证时收到的刷新令牌获取新的oauth令牌。[2]

[1] https://developers.podio.com/authentication/username_password

[2] https://developers.podio.com/authentication