使用python blogger api时状态参数不起作用

使用python blogger api时状态参数不起作用,python,blogger,google-api-python-client,google-blogger-api,Python,Blogger,Google Api Python Client,Google Blogger Api,我正在尝试使用GoogleAPI python客户端1.12.5和python 3.8下的服务帐户auth。在我看来,当指定status参数时,Google用404HTTP代码响应。我不明白为什么。我也查看了文档,但我无法将任何内容与此错误联系起来 我已经粘贴了我的代码。错误发生在第三次调用中 代码如下: from google.oauth2 import service_account from googleapiclient.discovery import build SCOPES =

我正在尝试使用GoogleAPI python客户端1.12.5和python 3.8下的服务帐户auth。在我看来,当指定status参数时,Google用404HTTP代码响应。我不明白为什么。我也查看了文档,但我无法将任何内容与此错误联系起来

我已经粘贴了我的代码。错误发生在第三次调用中

代码如下:

from google.oauth2 import service_account
from googleapiclient.discovery import build

SCOPES = ['https://www.googleapis.com/auth/blogger']
SERVICE_ACCOUNT_FILE = 'new_service_account.json'
BLOG_ID = '<your_blog_id>'

credentials = service_account.Credentials.from_service_account_file(
        SERVICE_ACCOUNT_FILE, scopes=SCOPES)

service = build('blogger', 'v3', credentials=credentials)
p = service.posts()

# FIRST
promise = p.list(blogId=BLOG_ID)
result = promise.execute()

# SECOND
promise = p.list(blogId=BLOG_ID, orderBy='UPDATED')
result = promise.execute()


#THIRD
promise = p.list(blogId=BLOG_ID, orderBy='UPDATED', status='DRAFT')
result = promise.execute()  # <===== ERROR HAPPENS HERE!!!!

service.close()
来自google.oauth2导入服务\u帐户
从GoogleAppClient.discovery导入生成
作用域=['https://www.googleapis.com/auth/blogger']
服务账户文件='new\u服务账户.json'
BLOG_ID=“”
凭据=服务\u帐户.credentials.from\u服务\u帐户\u文件(
服务\帐户\文件,作用域=作用域)
服务=构建('blogger','v3',凭证=凭证)
p=服务职位()
#首先
promise=p.list(blogId=BLOG\u ID)
结果=promise.execute()
#第二
promise=p.list(blogId=BLOG\u ID,orderBy='UPDATED')
结果=promise.execute()
#第三
promise=p.list(blogId=BLOG\u ID,orderBy='UPDATED',status='DRAFT')

result=promise.execute()#我可以重现这个问题。。。添加状态=草稿将返回404,但任何其他筛选器正在工作

  • 已尝试使用服务帐户,代码:404

  • 使用API键尝试如下
    result=requests.get('https://blogger.googleapis.com/v3/blogs//posts?status=DRAFT&orderBy=UPDATED&alt=json&key= 这很有效

    使用该令牌请求以草稿状态向我发送日志

    只需在该脚本中复制/粘贴原始
    授权
    标题:

    导入请求
    blog_id=“”
    标题={
    “授权”:“持票人”
    }
    #仅使用授权标头
    result=requests.get(
    'https://blogger.googleapis.com/v3/blogs/%s/posts?status=DRAFT&orderBy=UPDATED&alt=json“%”(博客id),
    标题=标题
    )
    打印(结果)
    #如果您至少有一篇草稿文章,则应该打印草稿
    打印(result.json()['items'][0]['status'])
    #使用“access_token”参数构造,授权头被拆分为只有token
    结果=请求。获取('https://blogger.googleapis.com/v3/blogs/%s/posts?status=DRAFT&orderBy=UPDATED&alt=json&access_token=%s“%”(blog_id,标题['Authorization'][len('Bearer'):]))
    打印(结果)
    #如果您至少有一篇草稿文章,则应该打印草稿
    打印(result.json()['items'][0]['status'])
    
    结果我目前:

    这个bug似乎不是来自库,而是来自令牌权限……但是我也像你一样使用控制台来生成访问


    总而言之,我认为这要么是一个bug,要么是谷歌的自愿性行为……我不知道“尝试这个API”需要多长时间token是有效的,但它是我目前发现的获取条款草案的唯一方法…也许你可以尝试打开一个bug通知单,但我不知道具体在哪里可以这样做。

    为了创建一个通知单,你可以在购买支持许可证时始终这样做。打开此类问题的另一个地方是。因为已经发送了这里的一个问题很有可能,但就我个人而言,我从来没有得到答案…所以祝你好运。我认为等待“尝试此API”中的令牌解决方案是你唯一可能的方法:/你有关于403的更多详细信息吗?如响应正文?简单的方法可以使用“复制为卷曲”,删除参数以仅保留
    身份验证
    标题(同时删除get param key=)。我认为如果不使用pupeeter或selenium,很难自动获取它,因为它涉及到oauth的大量js进程,所以我认为这很难……但如果这个功能真的很关键,那么现在你别无选择:/@madtyn I更新了我的答案;)对于我来说,“复制为卷曲”,如果我直接使用它,它就可以工作。我使用的是Firefox,据我所知,它不会生成完全相同的curl输出,所以请尝试一下。我可能会接受答案,但授权持有者过期,因此我必须确定另一个解决方案。无论如何,谢谢。:-)
    Traceback (most recent call last):
      File "/home/madtyn/.local/share/JetBrains/Toolbox/apps/PyCharm-P/ch-0/202.7660.27/plugins/python/helpers/pydev/pydevd.py", line 1448, in _exec
        pydev_imports.execfile(file, globals, locals)  # execute the script
      File "/home/madtyn/.local/share/JetBrains/Toolbox/apps/PyCharm-P/ch-0/202.7660.27/plugins/python/helpers/pydev/_pydev_imps/_pydev_execfile.py", line 18, in execfile
        exec(compile(contents+"\n", file, 'exec'), glob, loc)
      File "/home/madtyn/PycharmProjects/blogger/main.py", line 24, in <module>
        result = promise.execute()
      File "/home/madtyn/venvs/blogger/lib/python3.8/site-packages/googleapiclient/_helpers.py", line 134, in positional_wrapper
        return wrapped(*args, **kwargs)
      File "/home/madtyn/venvs/blogger/lib/python3.8/site-packages/googleapiclient/http.py", line 915, in execute
        raise HttpError(resp, content, uri=self.uri)
    googleapiclient.errors.HttpError: <HttpError 404 when requesting https://blogger.googleapis.com/v3/blogs/<blog_id>/posts?orderBy=UPDATED&status=DRAFT&alt=json returned "Not Found">
    python-BaseException