Python 3.x 使用Google API客户端defaut credentails创建Blogger API终结点时出错
我试图在谷歌云函数中创建一个BloggerAPI服务对象。我参考了(获取计算引擎、Kubernetes引擎、AppEngine灵活环境和云功能的凭据部分)中的示例 给出的示例是针对Google Starage的。我正在尝试将其转换为博客API的Google API客户端。我找不到有关如何使用此默认凭据创建Blogger API服务对象的文档。我试图重用来自的代码 我尝试了以下代码,但出现了错误。我知道这是错误的,但我没有关于如何使用此凭证的文档Python 3.x 使用Google API客户端defaut credentails创建Blogger API终结点时出错,python-3.x,google-cloud-functions,blogger,google-api-python-client,Python 3.x,Google Cloud Functions,Blogger,Google Api Python Client,我试图在谷歌云函数中创建一个BloggerAPI服务对象。我参考了(获取计算引擎、Kubernetes引擎、AppEngine灵活环境和云功能的凭据部分)中的示例 给出的示例是针对Google Starage的。我正在尝试将其转换为博客API的Google API客户端。我找不到有关如何使用此默认凭据创建Blogger API服务对象的文档。我试图重用来自的代码 我尝试了以下代码,但出现了错误。我知道这是错误的,但我没有关于如何使用此凭证的文档 from google.auth import c
from google.auth import compute_engine
import googleapiclient.discovery
credentials = compute_engine.Credentials()
print(type(credentials))
blogger = googleapiclient.discovery.build('blogger', 'v3', credentials=credentials)
print(blogger)
我得到以下错误:
E 2020-01-01T20:16:08.656Z TestHTTPFunction h8log1bk5kam Traceback (most recent call last): TestHTTPFunction h8log1bk5kam
E 2020-01-01T20:16:08.656Z TestHTTPFunction h8log1bk5kam File "/env/local/lib/python3.7/site-packages/googleapiclient/discovery_cache/file_cache.py", line 33, in <module> TestHTTPFunction h8log1bk5kam
E 2020-01-01T20:16:08.656Z TestHTTPFunction h8log1bk5kam from oauth2client.contrib.locked_file import LockedFile TestHTTPFunction h8log1bk5kam
E 2020-01-01T20:16:08.656Z TestHTTPFunction h8log1bk5kam ModuleNotFoundError: No module named 'oauth2client' TestHTTPFunction h8log1bk5kam
E 2020-01-01T20:16:08.656Z TestHTTPFunction h8log1bk5kam TestHTTPFunction h8log1bk5kam
E 2020-01-01T20:16:08.656Z TestHTTPFunction h8log1bk5kam During handling of the above exception, another exception occurred: TestHTTPFunction h8log1bk5kam
E 2020-01-01T20:16:08.656Z TestHTTPFunction h8log1bk5kam TestHTTPFunction h8log1bk5kam
E 2020-01-01T20:16:08.656Z TestHTTPFunction h8log1bk5kam Traceback (most recent call last): TestHTTPFunction h8log1bk5kam
E 2020-01-01T20:16:08.656Z TestHTTPFunction h8log1bk5kam File "/env/local/lib/python3.7/site-packages/googleapiclient/discovery_cache/file_cache.py", line 37, in <module> TestHTTPFunction h8log1bk5kam
E 2020-01-01T20:16:08.656Z TestHTTPFunction h8log1bk5kam from oauth2client.locked_file import LockedFile TestHTTPFunction h8log1bk5kam
E 2020-01-01T20:16:08.656Z TestHTTPFunction h8log1bk5kam ModuleNotFoundError: No module named 'oauth2client' TestHTTPFunction h8log1bk5kam
E 2020-01-01T20:16:08.656Z TestHTTPFunction h8log1bk5kam TestHTTPFunction h8log1bk5kam
E 2020-01-01T20:16:08.656Z TestHTTPFunction h8log1bk5kam During handling of the above exception, another exception occurred: TestHTTPFunction h8log1bk5kam
E 2020-01-01T20:16:08.656Z TestHTTPFunction h8log1bk5kam TestHTTPFunction h8log1bk5kam
E 2020-01-01T20:16:08.656Z TestHTTPFunction h8log1bk5kam Traceback (most recent call last): TestHTTPFunction h8log1bk5kam
E 2020-01-01T20:16:08.656Z TestHTTPFunction h8log1bk5kam File "/env/local/lib/python3.7/site-packages/googleapiclient/discovery_cache/__init__.py", line 41, in autodetect TestHTTPFunction h8log1bk5kam
E 2020-01-01T20:16:08.656Z TestHTTPFunction h8log1bk5kam from . import file_cache TestHTTPFunction h8log1bk5kam
E 2020-01-01T20:16:08.656Z TestHTTPFunction h8log1bk5kam File "/env/local/lib/python3.7/site-packages/googleapiclient/discovery_cache/file_cache.py", line 41, in <module> TestHTTPFunction h8log1bk5kam
E 2020-01-01T20:16:08.656Z TestHTTPFunction h8log1bk5kam 'file_cache is unavailable when using oauth2client >= 4.0.0 or google-auth') TestHTTPFunction h8log1bk5kam
E 2020-01-01T20:16:08.656Z TestHTTPFunction h8log1bk5kam ImportError: file_cache is unavailable when using oauth2client >= 4.0.0 or google-auth TestHTTPFunction h8log1bk5kam
I 2020-01-01T20:16:08.656Z TestHTTPFunction h8log1bk5kam URL being requested: GET https://www.googleapis.com/discovery/v1/apis/blogger/v3/rest TestHTTPFunction h8log1bk5kam
I 2020-01-01T20:16:08.723Z TestHTTPFunction h8log1bk5kam <googleapiclient.discovery.Resource object at 0x7ec9066c9710> TestHTTPFunction h8log1bk5kam
I 2020-01-01T20:16:08.724Z TestHTTPFunction h8log1bk5kam URL being requested: GET https://www.googleapis.com/blogger/v3/blogs/2709229652340798222?maxPosts=2&alt=json TestHTTPFunction h8log1bk5kam
E 2020-01-01T20:16:08.752Z TestHTTPFunction h8log1bk5kam Encountered 403 Forbidden with reason "insufficientPermissions" TestHTTPFunction h8log1bk5kam
E 2020-01-01T20:16:08.656Z TestHttp函数h8log1bk5kam回溯(最后一次调用):TestHttp函数h8log1bk5kam
E 2020-01-01T20:16:08.656Z TestHtpFunction h8log1bk5kam文件“/env/local/lib/python3.7/site packages/GoogleAppClient/discovery_cache/File_cache.py”,第33行,在TestHtpFunction h8log1bk5kam中
E 2020-01-01T20:16:08.656Z从oauth2client.contrib.locked_文件导入锁定文件TestH8Log1Bk5kam测试h8log1bk5kam功能
E 2020-01-01T20:16:08.656Z测试HTTPFunction h8log1bk5kam ModuleNotFound错误:没有名为“oauth2client”的模块测试HTTPFunction h8log1bk5kam
E 2020-01-01T20:16:08.656Z测试HTTPFunction h8log1bk5kam测试HTTPFunction h8log1bk5kam
E 2020-01-01T20:16:08.656Z TestHTTPFunction h8log1bk5kam在处理上述异常期间,发生了另一个异常:TestHTTPFunction h8log1bk5kam
E 2020-01-01T20:16:08.656Z测试HTTPFunction h8log1bk5kam测试HTTPFunction h8log1bk5kam
E 2020-01-01T20:16:08.656Z TestHTTPFunction h8log1bk5kam回溯(最后一次调用):TestHTTPFunction h8log1bk5kam
E 2020-01-01T20:16:08.656Z TestHtpFunction h8log1bk5kam文件“/env/local/lib/python3.7/site packages/GoogleAppClient/discovery_cache/File_cache.py”,第37行,在TestHtpFunction h8log1bk5kam中
E 2020-01-01T20:16:08.656Z TestHTTPFunction h8log1bk5kam来自oauth2client.locked_文件导入LockedFile TestHTTPFunction h8log1bk5kam
E 2020-01-01T20:16:08.656Z测试HTTPFunction h8log1bk5kam ModuleNotFound错误:没有名为“oauth2client”的模块测试HTTPFunction h8log1bk5kam
E 2020-01-01T20:16:08.656Z测试HTTPFunction h8log1bk5kam测试HTTPFunction h8log1bk5kam
E 2020-01-01T20:16:08.656Z TestHTTPFunction h8log1bk5kam在处理上述异常期间,发生了另一个异常:TestHTTPFunction h8log1bk5kam
E 2020-01-01T20:16:08.656Z测试HTTPFunction h8log1bk5kam测试HTTPFunction h8log1bk5kam
E 2020-01-01T20:16:08.656Z TestHTTPFunction h8log1bk5kam回溯(最后一次调用):TestHTTPFunction h8log1bk5kam
E 2020-01-01T20:16:08.656Z TestHTTPFunction h8log1bk5kam文件“/env/local/lib/python3.7/site packages/GoogleAppClient/discovery_cache/_uuinit_U5;.py”,自动检测测试h8log1bk5kam函数第41行
E 2020-01-01T20:16:08.656Z测试HTTPFunction h8log1bk5kam从。导入文件_缓存测试h8log1bk5kam函数h8log1bk5kam
E 2020-01-01T20:16:08.656Z TestHtpFunction h8log1bk5kam文件“/env/local/lib/python3.7/site packages/GoogleAppClient/discovery_cache/File_cache.py”,第41行,在TestHtpFunction h8log1bk5kam中
E 2020-01-01T20:16:08.656Z TestHTTPFunction h8log1bk5kam“使用oauth2client>=4.0.0或google auth时,文件缓存不可用”)TestHTTPFunction h8log1bk5kam
E 2020-01-01T20:16:08.656Z TestHttp函数h8log1bk5kam导入错误:当使用oauth2client>=4.0.0或google auth TestHttp函数h8log1bk5kam时,文件缓存不可用
I 2020-01-01T20:16:08.656Z TestHTTPFunction h8log1bk5kam请求的URL:获取https://www.googleapis.com/discovery/v1/apis/blogger/v3/rest TestHTTPFunction h8log1bk5kam
I 2020-01-01T20:16:08.723Z测试HTTPFunction h8log1bk5kam测试HTTPFunction h8log1bk5kam
I 2020-01-01T20:16:08.724Z TestHTTPFunction h8log1bk5kam请求的URL:获取https://www.googleapis.com/blogger/v3/blogs/2709229652340798222?maxPosts=2&alt=json TestHTTPFunction h8log1bk5kam
E 2020-01-01T20:16:08.752Z测试HTTPFunction h8log1bk5kam遇到403禁止,原因是“权限不足”测试HTTPFunction h8log1bk5kam
到目前为止,我看到的问题是,您正在使用Google Compute Engine的客户端库(连接到GCP虚拟机),但您希望连接到Blogger
是一个如何使用正确的客户端库连接到Blogger的示例
管理凭据的方法是使用具有以下结构的credential.json文件:
{
"web": {
"client_id": "[[INSERT CLIENT ID HERE]]",
"client_secret": "[[INSERT CLIENT SECRET HERE]]",
"redirect_uris": [],
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://accounts.google.com/o/oauth2/token"
}
}
在您的Python代码中,有以下内容:
import sys
from oauth2client import client
from googleapiclient import sample_tools
def main(argv):
# Authenticate and construct service.
service, flags = sample_tools.init(
argv, 'blogger', 'v3', __doc__, __file__,
scope='https://www.googleapis.com/auth/blogger')
try:
users = service.users()
thisuser = users.get(userId='self').execute()
这个答案假设API调用是通过服务器或桌面进行的。我的问题是通过一个谷歌云函数来使用API,在这个函数中不能存储文件。给出的示例适用于Google存储API。我正试图为Blogger API做同样的事情。您的示例适用于云存储,因为云存储和云功能可以在GCP的同一个项目中。Blogger的不同之处在于,尽管它是Google的一部分,但它不是GCP的一部分,因此它不能成为项目的一部分。因此,通过本地主机或云功能对blogger的身份验证是相同的。要使用多个文件进行部署,您可以压缩所有文件,然后从压缩文件进行部署。