尽管身份验证成功,但仍无法通过 Python 中的 API 上传或更新跑道中的字段

问题描述 投票:0回答:0

我正在编写一个 Python 脚本来自动将文件上传和字段更新到跑道应用程序。我正在使用 requests 库向 Podio API 发送 HTTP 请求。

我能够使用客户端凭据成功进行身份验证,并且可以毫无问题地从跑道上检索信息和下载文件。但是,当我尝试上传文件或更新项目中的字段时,我收到 403 错误,指出:

“此方法不允许进行 None 身份验证。”

这是我上传文件的代码的相关部分:

import requests

def upload_file(file_path):
    url = "https://api.podio.com/file"
    headers = {"Authorization": f"Bearer {access_token}"}

    with open(file_path, 'rb') as f:
        files = {'source': f}
        response = requests.post(url, headers=headers, files=files)

    if response.status_code != 200:
        raise Exception(f"Error uploading file: {response.status_code}, {response.text}")

    return response.json()['file_id']

upload_file('path_to_your_file')

更新项目:

 def update_item(item_id, field_values):
    url = f"https://api.podio.com/item/{item_id}"
    headers = {"Authorization": f"Bearer {access_token}"}
    payload = {"fields": field_values}
    response = requests.put(url, headers=headers, json=payload)

    if response.status_code != 200:
        raise Exception(f"Error updating item: {response.status_code}, {response.text}")

    return response.json()['revision']

    update_item('your_item_id', {'your_field_key': [{'value': 'your_new_value'}]})`

对于这两个功能,access_token 是通过 OAuth 2.0 客户端凭据授予流程获取的访问令牌,可以很好地下载文件或从应用程序内的字段中提取值。

尝试上传文件或更新项目时,似乎无法识别访问令牌,即使相同的令牌可以很好地检索信息和下载文件。

我已检查并在 Podio 应用程序中拥有必要的权限,可以通过 Podio 界面手动执行这些操作。

关于为什么这些特定操作可能会失败以及我可以采取哪些措施来解决它,有什么想法吗?

我也尝试过一些简单的方法来更新文本字段,但失败了:

 # Prepare the data for updating the 'brt-3' field
data = {
    "fields": {
        "brt-3": [{"value": new_value}]
    }
}

# Send a PUT request to the Podio API to update the item with the new data
response = requests.put(
    f"https://api.podio.com/item/{item_id}",
    headers={"Authorization": f"Bearer {access_token}"},
    json=data,
)

# Check the response
if response.status_code != 200:
    raise Exception(f"Error updating item: {response.status_code}, {response.text}")

我收到这些错误消息:

Traceback (most recent call last):
  File "c:\Users\RC\Documents\Python_personal_scripts\Podio\sending policies\Update Podio.py", line 50, in <module>
    raise Exception(f"Error updating item: {response.status_code}, {response.text}")
Exception: Error updating item: 403, {"error":"forbidden","error_detail":null,"error_description":"Authentication as None is not allowed for this method","error_parameters":{},"error_propagate":false,"request":{"url":"http://api.podio.com/item/2416776158","method":"PUT","query_string":""}}
python put podio
© www.soinside.com 2019 - 2024. All rights reserved.