0

我正在使用下面的代码向 Strava API 发出 599 个异步请求。出于某种原因,我对他们每个人的回应是

{"message":"授权错误","errors":[{"resource":"Application","field":"","code":"invalid"}]}

access_token这是您的查询字符串参数无效时通常会遇到的错误类型。但在这种情况下,令牌是 100% 正确的:当只是在浏览器中手动复制粘贴时,URL 返回正确的响应。

错误的原因可能是什么以及如何解决?可能是aiohttp会话以某种方式弄乱了身份验证过程?

注意:出于隐私原因,以下代码中的令牌是假的。

import aiohttp
import asyncio

async def fetch(session, url):
    async with session.get(url) as response:
        print(await response.text())

async def main():
    urls = ['''https://www.strava.com/api/v3/activities/
            280816027?include_all_efforts=true&
            access_token=11111111'''] * 599
    async with aiohttp.ClientSession() as session:
        tasks = [
                    asyncio.ensure_future(fetch(session, url))
                    for url in urls
        ]
        await asyncio.gather(*tasks)

loop = asyncio.get_event_loop()
loop.run_until_complete(main())
4

1 回答 1

1

您不应该使用多行字符串作为 URL,因为它会保留所有空格,因此您会得到错误的 URL。

于 2019-01-27T12:49:21.667 回答