Я пишу интеграцию для публикации задач в Асане, используя официальный PHP-клиент Asana.
Локально — с помощью Google App Engine Launcher — мой скрипт работает так, как задумано, и задача Asana создана.
Удаленно, я получаю ошибку от вызова API createInTask. Я отследил это до ответа, возвращенного в течение \Asana\Client::request
, который содержит объект ошибки:
stdClass Object
(
[message] => projects: [0]: Unknown object: 142133526971480
[help] => For more information on API status codes and how to handle them, read the docs on errors: https://asana.com/developers/documentation/getting-started/errors
)
Интересно, что проект, в который я вставляю задачу, имеет идентификатор 142133526971484
— обратите внимание, что это идентично идентификатору, указанному в приведенной выше ошибке, за исключением младшей цифры.
Теперь при проверке запроса, отправленного в Asana, я вижу данные, отправленные в $response->request->payload
, Локально — где работает код, это дает:
{"data":{"name":"Test title","projects":[142133526971484]}}
Но выполнение того же скрипта на GAE дает:
{"data":{"name":"Test title","projects":[1.4213352697148e+14]}}
В реальных данных идентификатор проекта указан в научной нотации и содержит последнюю цифру.
Я всегда думал, что научная нотация — это скорее выходной формат, чем то, как на самом деле хранятся данные, но кажется вероятным, что это является причиной неправильного идентификатора проекта.
Я пытался привести данные в виде строки перед выполнением вызова, но, очевидно, они отправляются как POST-запрос, поэтому не зависят от типа.
Кто-нибудь видел эту или похожую проблему раньше? Интересно, есть ли разница в конфигурации между PHP со вкусом GAE в реальном времени и локальным — что-то вроде data_precision
установка?
Задача ещё не решена.
Других решений пока нет …