gpt4 book ai didi

python - 如何将服务帐户与 Google 的 python api 和驱动器一起使用?

转载 作者:太空宇宙 更新时间:2023-11-04 10:32:58 31 4
gpt4 key购买 nike

我尝试编写 python 2.7 脚本来将文件上传到我的个人 google 驱动器文件夹。

经过几个问题我卡住了才知道。这是我当前的错误:

NotImplementedError: PKCS12 format is not supported by the PyCrpto library. Try converting to a "PEM" (openssl pkcs12 -in xxxxx.p12 -nodes -nocerts > privatekey.pem) or using PyOpenSSL if native code is an option.

我已经尝试运行此命令,如本 question 中所述和 answer .

openssl pkcs12 -in privatekey.p12 -nodes -nocerts > privatekey.pem
openssl pkcs8 -nocrypt -in privatekey.pem -passin pass:notasecret -topk8 -out pk.pem

我从新的现代花哨的谷歌开发者控制台下载的 privatekey.p12 最初名为 something-0123eed.json 并且看起来像这样1:

{
"private_key_id": "9ced108fe72345373b75b03d7e967a3f8c0084ca",
"private_key": "-----BEGIN PRIVATE KEY-----\nxe91Tr6RHs57LKX2HivFmOQwcFoJkUPrbB6Gwy8prE...Pc9jNExo5Krp1kLrkJYxAOmUWxWwPJ4pCx7Lxc6uQQnAlKyRmnfVpdS2I0\n-----END PRIVATE KEY-----\n",
"client_email": "0KsVeSAa91UtEGvY9lil@developer.gserviceaccount.com",
"client_id": "0KsVeSAa91UtEGvY9lil.apps.googleusercontent.com",
"type": "service_account"
}

我的 python 代码如下所示:

#!/bin/env python2.7

from apiclient.discovery import build
from apiclient.http import MediaFileUpload
import httplib2
from oauth2client.client import SignedJwtAssertionCredentials


credentials = SignedJwtAssertionCredentials(
service_account_name='0KsVeSAa91UtEGvY9lil@developer.gserviceaccount.com',
private_key=key,
scope = [
'https://www.googleapis.com/auth/drive',
'https://www.googleapis.com/auth/drive.file',
'https://www.googleapis.com/auth/drive.appdata',
'https://www.googleapis.com/auth/drive.apps.readonly'
]
)

http = httplib2.Http()
http = credentials.authorize(http)

drive_folder_id = 'jhIKHOG6supMhpjPJFHffZarwxP6'


service = build('drive', 'v2', http=http)


media_body = MediaFileUpload('/path/to/superfile.gpg'), mimetype='application/pgp-encrypted')
body = {
'title': 'superfile.gpg',
'description': '',
'mimeType': 'application/pgp-encrypted',
'parents': [{'id': drive_folder_id}]
}

file = service.files().insert(
body=body,
media_body=media_body).execute()

1:(当然,我把值改成了junk)

最佳答案

我找到了 answer in this gist :

openssl pkcs12 -passin pass:notasecret -in privatekey.p12 -nocerts -passout pass:notasecret -out key.pem
openssl pkcs8 -nocrypt -in key.pem -passin pass:notasecret -topk8 -out privatekey.pem
rm key.pem

但在此之前,我必须重新生成一个新的私钥,但格式为 P12。

generate new P12 key

关于python - 如何将服务帐户与 Google 的 python api 和驱动器一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25189809/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com