为了访问Google (和人格化调用),我使用了一个服务帐户(从Google平台创建)。我拥有的json文件如下所示
{
"type": "service_account",
"project_id": "[PROJECT-ID]",
"private_key_id": "[KEY-ID]"
"private_key": "-----BEGIN PRIVATE KEY-----\n[PRIVATE-KEY]\n-----END PRIVATE KEY-----\n",
"client_email": "[SERVICE-ACCOUNT-EMAIL]",
"client_id": "[CLIENT-ID]",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://accounts.google.com/o/oauth2/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/[SERVICE-ACCOUNT-EMAIL]"
}我还使用oauth2client库来简化操作,但我无法找到一种方法来创建凭据,然后指定作用域和委托帐户。
我试过了
from oauth2client import service_account
self._credentials = service_account.ServiceAccountCredentials.from_json(SERVICE_ACCOUNT_JSON_CONTENT)
self._credentials = self._credentials.create_scoped([u'https://www.googleapis.com/auth/gmail.send'])
self._credentials = self._credentials.create_delegated(MY_USER)
self._client = discovery.build(u'gmail', u'v1', credentials=self._credentials)但是我得到了一个错误,因为它需要一个PKCS-8键。
我怎么能这么做?(我的代码运行在上,如果这有帮助的话)
谢谢
发布于 2018-11-15 14:48:02
最后,由于oauth2client现在被反对为支持谷歌-奥斯,所以我做了
from googleapiclient import discovery
from google.oauth2.service_account import Credentials
credentials = Credentials.from_service_account_file(PATH_TO_SERVICE_ACCOUNT_JSON,
scopes=[u'https://www.googleapis.com/auth/gmail.send'])
delegated_credentials = self._credentials.with_subject(MY_USER)
client = discovery.build(u'gmail', u'v1', credentials=delegated_credentials)成功了-)
https://stackoverflow.com/questions/53320537
复制相似问题