Podio API-项目任务同步期间令牌无效

Podio API-项目任务同步期间令牌无效,podio,Podio,我们当前在尝试获取新任务时收到此错误: {"error_parameters":{},"error_detail":null,"error_propagate":false,"request":{"url":"http:\/\/api.podio.com\/task","query_string":"completed=true&completed_on=-5d&fields=completed_on&limit=100&offset=0&sort_by=

我们当前在尝试获取新任务时收到此错误:

{"error_parameters":{},"error_detail":null,"error_propagate":false,"request":{"url":"http:\/\/api.podio.com\/task","query_string":"completed=true&completed_on=-5d&fields=completed_on&limit=100&offset=0&sort_by=rank&sort_desc=false&space=3798819","method":"GET"},"error_description":"Invalid token '(files,tags,votes)'","error":"invalid_value"}
只是想让您知道,我们并没有将其用于内部目的,相反,我们有一个集成设置,允许任务同步和完成

我们正在对所有空间任务进行循环分页:

get('/task',{space:project\u link.remote\u id,排序依据:'rank',limit:limit,offset:offset,sort\u desc:false,completed:completed,fields:'completed\u on'})

编辑:

def sync_project(project_link)
  existing_remote_ids = _synced_remote_task_ids(project_link.link_id)
  synced_project_ids = []
  [{completed: false}, {completed: true}].each do |params|
    offset = 0
    loop do
      tasks, next_offset = tasks_page_for_project(project_link: project_link, offset: offset, **params)
      tasks.each do |task|
        remote_task = map_podio_task(task, project_link.link_id)
        _process_task(remote_task)
        synced_project_ids << remote_task[:id].to_s
      end
      offset = next_offset
      break unless next_offset
    end
  end
  _mark_tasks_deleted(existing_remote_ids - synced_project_ids)
end

def tasks_page_for_project(project_link:, offset:, completed: false)
  next_offset = nil
  limit = 100
  params = { space: project_link.remote_id, sort_by: 'rank', limit: limit, offset: offset, sort_desc: false, completed: completed, fields: 'completed_on' }
  params[:completed_on] = '-5d' if completed
  tasks = get('/task', params)
  if tasks.size == limit
    next_offset = offset + limit
  end
  return tasks, next_offset
rescue TaskSync::ProjectRemovedError => ex
  raise TaskSync::ProjectRemovedError.new(self, project_link.remote_id), ex.message
rescue TaskSync::TemporaryNetworkError => ex
  ex.project_id = project_link.remote_id
  raise ex
end

def service
  check_token
  @service ||= build_client(href, 'Authorization' => "OAuth2 #{token[:token]}")
end

def authorization
  params = {
    grant_type: 'refresh_token',
    client_id: TaskSync.config[:podio][:client_id],
    client_secret: TaskSync.config[:podio][:client_secret],
    refresh_token: token[:refresh_token]
  }

  build_client 'https://podio.com/oauth/token', { 'Content-Type' => 'application/x-www-form-urlencoded' }, params
end

def href
  'https://api.podio.com'
end
def sync_项目(项目链接)
现有的\u远程\u id=\u同步的\u远程\u任务\u id(项目\u链接.link\u id)
同步的_项目_id=[]
[{completed:false},{completed:true}]。每个do |参数|
偏移量=0
环道
任务,下一个\u偏移量=任务\u页面\u,用于\u项目(项目链接:项目链接,偏移量:偏移量,**参数)
任务。每个任务|
远程任务=映射任务(任务、项目链接、链接id)
_进程任务(远程任务)
已同步\u项目\u ID ex
raise TaskSync::ProjectRemovedError.new(self,project\u link.remote\u id),例如message
rescue TaskSync::TemporaryNetworkError=>ex
例如,project\u id=project\u link.remote\u id
加薪
结束
def服务
支票代币
@服务| |=构建_客户端(href,'Authorization'=>“OAuth2#{token[:token]}”)
结束
def授权
参数={
授予类型:“刷新令牌”,
客户端id:TaskSync.config[:podio][:客户端id],
客户端密码:TaskSync.config[:podio][:客户端密码],
刷新\u令牌:令牌[:刷新\u令牌]
}
建立客户关系https://podio.com/oauth/token“,{”内容类型“=>”应用程序/x-www-form-urlencoded'},参数
结束
def href
'https://api.podio.com'
结束
这个错误只发生在一个客户端上

你能告诉我们这个错误是什么意思吗?它与OAuth相关还是与其他东西有关


谢谢

您没有提到您使用的编程语言,下面是我在PHP上编写的一个示例:

require_once 'podio/PodioAPI.php'; //podio library

error_log("validate triggerd");

$client_id = 'your client Id';
$client_secret = 'your client secret';
$app_id = 'your app id';
$app_token = 'your app token';

Podio::setup($client_id, $client_secret);
// Turn on debugging
Podio::$debug = true;

// Authenticate the app
Podio::authenticate('app', array('app_id' => $app_id, 'app_token' => $app_token));
并获取您的物品:

$tasks = PodioTask::get_all( $attributes = array() );

感谢您在Podio文档中报告发现的问题。这里有误导性(更新的文档已经发布)

字段上的
completed_格式为
YYYY-MM-DD-yyy-MM-DD


例如,对于2017年6月完成的所有任务:
2017-06-01-2017-06-30

我们正在使用ruby,问题不在于如何提出请求,而在于该错误的实际含义。我在问题中添加了
ruby
标记,尽管这不会有什么区别。您能否提供代码示例,因此我尝试重现此问题?使用集成的最大部分进行编辑。响应只需通过一个
JSON.parse(respone.body)
解析,根据状态码,我们要么返回它,要么引发相应的错误。感谢您的示例。这似乎与oAuth无关,而是与如何检索任务的细节有关。请尝试一种可能的修复方法:将“-5d”替换为“5_天”或其他可用选项:(还有一种可能的修复方法:将“files:false”添加到参数列表中)谢谢@Pavlo Podio!我会试试看,过几天再打给你,看看它是否还在发生。这方面有什么更新吗?你确定吗??由于此错误只是随机发生的,我不相信它与上填写的表格的格式有任何关系。。您已经声明了不少于3种不同的语法样式。。它经常出现,以至于您甚至不知道您的API是如何工作的。随机更改API契约并且不支持旧语法(-5d)也是非常糟糕的。。如果我们收到错误,那么这是您的API工作不正常的问题。此问题现在已得到回答,答案已被接受。Podio并没有随机更改API,但有一个关于任务相关操作的日期格式的误导性文档在3个月前修复@Urkle-如果您有类似的问题/问题-请就SO提出新问题:)@Pavlo Podio实施此更改后,我想到了部署更改之前需要了解的几个案例:1。您在哪个时区解释已完成的\u on筛选器?2.您是否支持开放式过滤器(相当于>=)?(如“2017-10-13-”)3。我们能否在两天后(例如“2017-10-13-2017-10-20”)进行一次筛选,以解释任何时区异常情况?@Pavlo-Podio-ping@Pavlo-Podio是的,我实施了它,它在大多数情况下都有效,但我们希望确保我们已经涵盖了所有内容,这样我们就不会让客户在同步期间错过他们项目中的任务。这就是我问上述问题的原因。