我们一直在使用电子邮件设置API来管理我们的用户签名,并为Google Apps注入正确的HTML签名。直到最近它一直运作良好。旧代码使用“ClientLogin”和管理员凭据。我已经尝试使其与OAuth一起使用,因为ClientLogin已被完全删除。
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的新手,所以也许我错过了一些明显的东西。