跑道PHPAPI认证

Podio PHP API authentication

我对跑道PHPAPI身份验证有一个困惑。如果没有以下致命错误,我将无法完成某件事。我这样做:Podio::authenticate_with_password('aaa', 'bbb');

我明白了:PHP Fatal error: Uncaught PodioRateLimitError: "You have hit the rate limit. Please wait 300 seconds before trying again"

我的系统处理分为很多空间的复杂关系,这就是为什么我创建了一个“主”帐户,它在每个目标空间中都具有管理员的角色。

每次调用 webhook 时,我都会使用“master”帐户进行身份验证(由于同一脚本中的多重关系,使用应用程序进行身份验证需要大量工作)。

多次调用同一个 webhook,但在不同的上下文中。

如何避免每次调用我的 webhook 时都超出速率限制?我尝试了 OAuth 2,但是 Podio 文档对我的情况没有帮助。没有尝试对我有用。

您是否有办法保留 memory/database 身份验证数据,以便能够将其用于来自多个 webhook 调用的每个 password 身份验证?

非常感谢任何帮助!

解决方案

我在跑道上发现了一些有趣的东西PHP API class:

这是我所做的:

// Set user API key
Podio::setup('user-key', 'wejt9wetwerith34rtfhwetu34hwerud);

// Init refresh_token variable (avoid PHP warning if any refresh_token found in database)
$refresh_token = null;

// Get refresh_token from database if exists
$refresh_token = REFRESH_TOKEN_FROM_DATABASE;

// Authenticate
try{
    // Authenticate with refresh token stored in database
    Podio::authenticate( 'refresh_token', array( 'refresh_token' => $refresh_token ) );
}

// Authentication failed, request new refresh_token
catch ( Exception $ex ) {
    Podio::authenticate_with_password( 'aaa', 'bbb' );
    
    // Get Oauth data including refresh token
    $oauth = Podio::$oauth;
    
    // Authenticate with refresh token
    Podio::authenticate( 'refresh_token', array( 'refresh_token' => $oauth->refresh_token ) );

   // Store $oauth->refresh_token in database for next webhook call...
}

非常重要 在您的脚本中使用相同的用户 API 密钥以避免验证速率限制破坏,因为 refresh_token 链接到用户 API 用于发出请求的密钥。

跑道文档:

  1. 对于身份验证(一般): https://developers.podio.com/authentication
  2. 对于php 身份验证:http://podio.github.io/podio-php/authentication/
  3. 对于php会话管理: http://podio.github.io/podio-php/sessions/

答案在上面原始 post 的 SOLUTION 部分描述。