多次调用跑道认证失败
Podio authentication fails after multiple calls
我已经使用跑道 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 setup 的代码如下:
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');
}
这给了我以下错误:Cannot access self:: when no class scope is active.
我是否在正确的轨道上让会话管理器使用密码身份验证?错误发生在注释行。
(更新)
我终于能够正确地获得系统运行ning。上面的代码是正确的。只需重置服务器(Windows 服务器),Redis 即可生效。
如果您的脚本在每次创建项目时都向 Podio 进行身份验证,则您可能 运行 进入跑道 API 的身份验证请求的速率限制。
每次脚本被您的 webhook 触发时,您是否都会生成一个新的身份验证令牌? The Podio client libraries 包括一些可能有用的有关会话管理的一般文档!
为避免达到此限制,您应该使用 API 进行一次身份验证,然后存储从 API 返回的 oauth 和刷新令牌。 Redis 会成功的。然后对所有后续请求使用 oauth 令牌。
可在此处找到示例 [1]
您的 oauth 令牌最多有效期为 28 天。当它不再有效时,您将需要使用首次验证时收到的刷新令牌来获取新的 oauth 令牌。 [2]
[1] https://developers.podio.com/authentication/username_password
我已经使用跑道 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 setup 的代码如下:
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');
}
这给了我以下错误:Cannot access self:: when no class scope is active. 我是否在正确的轨道上让会话管理器使用密码身份验证?错误发生在注释行。
(更新) 我终于能够正确地获得系统运行ning。上面的代码是正确的。只需重置服务器(Windows 服务器),Redis 即可生效。
如果您的脚本在每次创建项目时都向 Podio 进行身份验证,则您可能 运行 进入跑道 API 的身份验证请求的速率限制。
每次脚本被您的 webhook 触发时,您是否都会生成一个新的身份验证令牌? The Podio client libraries 包括一些可能有用的有关会话管理的一般文档!
为避免达到此限制,您应该使用 API 进行一次身份验证,然后存储从 API 返回的 oauth 和刷新令牌。 Redis 会成功的。然后对所有后续请求使用 oauth 令牌。
可在此处找到示例 [1]
您的 oauth 令牌最多有效期为 28 天。当它不再有效时,您将需要使用首次验证时收到的刷新令牌来获取新的 oauth 令牌。 [2]
[1] https://developers.podio.com/authentication/username_password