使用 OAuth2 管理 Google EmailSettings
Using OAuth2 to manage Google EmailSettings
我们一直在使用电子邮件设置 API 来管理我们的用户签名,并为 Google 应用程序注入正确的 HTML 签名。直到最近它一直运行良好。旧代码使用 'ClientLogin' 和管理员凭据。既然 ClientLogin 已被完全删除,我一直在努力让它与 OAuth 一起工作。
import gdata.apps.emailsettings.client,sys
from oauth2client.client import SignedJwtAssertionCredentials
SERVICE_ACCOUNT_EMAIL = 'xx@developer.gserviceaccount.com'
filename = sys.argv[1]
username = sys.argv[2]
f = file('key.pem', 'rb')
key = f.read()
f.close()
credentials = SignedJwtAssertionCredentials(SERVICE_ACCOUNT_EMAIL, key,
scope='https://apps-apis.google.com/a/feeds/emailsettings/2.0/',
sub=username)
auth2token = gdata.gauth.OAuth2TokenFromCredentials(credentials)
emclient = gdata.apps.emailsettings.client.EmailSettingsClient(domain='companyname.com')
auth2token.authorize(emclient)
print filename
print username
f = open(filename, 'r')
data = f.read()
f.close
emclient.UpdateSignature(username=username, signature=data)
当我们 运行 它时,我们得到:
oauth2client.client.AccessTokenRefreshError: unauthorized_client: Unauthorized client or scope in request.
我已经阅读了有关电子邮件设置的文档 API,它提到了在同意屏幕上要求用户提供代码,但提供了关于其中任何一个应该如何工作的零文档,我宁愿不必处理任何用户交互。
我通过开发人员控制台激活了其中的 API,但它根本不存在。我尝试激活 Gmail 一个(尽管它不同),但没有帮助。
我是 OAuth2 和 Python 的新手,所以我可能遗漏了一些明显的东西。
您的代码是正确的。只要确保范围 (https://apps-apis.google.com/a/feeds/emailsettings/2.0/) is in place at https://admin.google.com/yourdomain.tld/ManageOauthClients
此外,请确保在 API Console 处选中 AdminSDK API。
我们一直在使用电子邮件设置 API 来管理我们的用户签名,并为 Google 应用程序注入正确的 HTML 签名。直到最近它一直运行良好。旧代码使用 'ClientLogin' 和管理员凭据。既然 ClientLogin 已被完全删除,我一直在努力让它与 OAuth 一起工作。
import gdata.apps.emailsettings.client,sys
from oauth2client.client import SignedJwtAssertionCredentials
SERVICE_ACCOUNT_EMAIL = 'xx@developer.gserviceaccount.com'
filename = sys.argv[1]
username = sys.argv[2]
f = file('key.pem', 'rb')
key = f.read()
f.close()
credentials = SignedJwtAssertionCredentials(SERVICE_ACCOUNT_EMAIL, key,
scope='https://apps-apis.google.com/a/feeds/emailsettings/2.0/',
sub=username)
auth2token = gdata.gauth.OAuth2TokenFromCredentials(credentials)
emclient = gdata.apps.emailsettings.client.EmailSettingsClient(domain='companyname.com')
auth2token.authorize(emclient)
print filename
print username
f = open(filename, 'r')
data = f.read()
f.close
emclient.UpdateSignature(username=username, signature=data)
当我们 运行 它时,我们得到:
oauth2client.client.AccessTokenRefreshError: unauthorized_client: Unauthorized client or scope in request.
我已经阅读了有关电子邮件设置的文档 API,它提到了在同意屏幕上要求用户提供代码,但提供了关于其中任何一个应该如何工作的零文档,我宁愿不必处理任何用户交互。
我通过开发人员控制台激活了其中的 API,但它根本不存在。我尝试激活 Gmail 一个(尽管它不同),但没有帮助。
我是 OAuth2 和 Python 的新手,所以我可能遗漏了一些明显的东西。
您的代码是正确的。只要确保范围 (https://apps-apis.google.com/a/feeds/emailsettings/2.0/) is in place at https://admin.google.com/yourdomain.tld/ManageOauthClients
此外,请确保在 API Console 处选中 AdminSDK API。