Podio PHP API аутентификация

У меня загадка с аутентификацией Podio PHP API. Я не могу что-то сделать без следующей фатальной ошибки. Я делаю это: Podio::authenticate_with_password('aaa', 'bbb');

и я получаю это: PHP Fatal error: Uncaught PodioRateLimitError: "You have hit the rate limit. Please wait 300 seconds before trying again"

Моя система работает со сложными отношениями, разделенными на множество пространств, поэтому я создал «главную» учетную запись, которая выполняет роль администратора в каждой целевой области.

Каждый раз, когда вызывается веб-перехватчик, я проверяю подлинность с помощью «главной» учетной записи (было бы много работы для проверки подлинности с помощью приложения из-за нескольких взаимосвязей в одном и том же сценарии).

Один и тот же веб-перехватчик вызывается несколько раз, но в разном контексте.

Как я могу избежать превышения лимита скорости каждый раз, когда вызывается мой веб-перехватчик? Пробовал OAuth 2, но документация Podio бесполезна в моем случае. У меня ни одна попытка не сработала.

Есть ли у вас способ сохранить данные аутентификации в памяти / базе данных, чтобы иметь возможность использовать их для каждой аутентификации password из нескольких вызовов веб-перехватчиков?

Любая помощь будет очень признательна!

РЕШЕНИЕ

Я нашел кое-что интересное, покопавшись в классе Podio PHP API:

Вот что я сделал:

// 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 пользователя, используемым для выполнения запроса.

@hassanmaleki - как ваш вопрос (тот, на который вы ссылались) связан с этим вопросом? Комментарии должны быть для уточнения вопроса, а не для продвижения другого вопроса.

David Makogon 01.05.2018 14:26
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
1
283
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Документация Podio:

  1. Для аутентификации (общая): https://developers.podio.com/authentication
  2. Для php аутентификация: http://podio.github.io/podio-php/authentication/
  3. Для управления сеансом php: http://podio.github.io/podio-php/sessions/

Он написал, что документация не помогла. Я считаю, что фрагмент или логический контекст были бы лучшим ответом.

Vincent Poirier 01.05.2018 16:12

@VincentPoirier прав. Я хотел бы получить фрагмент, чтобы увидеть то, что я не понял из документации Podio. Является ли приведенный выше код реальным способом избежать ограничения скорости аутентификации? Будем очень признательны за любые дальнейшие объяснения.

Mathieu Smith 01.05.2018 16:49
Do you have any way to keep in memory/database authentication data to be able to use it for each password authentication from multiple webhook call? - Да, это называется управление сеансом, и все подробности о том, как его реализовать, находятся здесь podio.github.io/podio-php/sessions
Pavlo - Podio 01.05.2018 17:11
Ответ принят как подходящий

Ответ описан в разделе РЕШЕНИЕ исходного сообщения выше.

Ваше решение будет работать, но все еще не идеально. Нет необходимости каждый раз звонить в Podio::authenticate( 'refresh_token'. Вы должны сохранить и access_token, и refresh_token и использовать их для создания объекта PodioOAuth. Затем, если у вас много вызовов, будет 0 запросов на аутентификацию, и только время от времени refresh_token будет использоваться для получения нового access_token.

Pavlo - Podio 08.11.2018 19:43

Можете ли вы привести пример использования PodioOAuth в моем случае?

Mathieu Smith 09.11.2018 21:45

Другие вопросы по теме