0
我們一直使用電子郵件設置API來管理我們的用戶簽名,併爲Google Apps注入適當的HTML簽名。它直到最近才奏效。舊代碼使用具有管理員憑據的「ClientLogin」。我一直試圖使它與OAuth一起工作,現在ClientLogin已被完全刪除。使用OAuth2管理Google電子郵件設置
import gdata.apps.emailsettings.client,sys
from oauth2client.client import SignedJwtAssertionCredentials
SERVICE_ACCOUNT_EMAIL = '[email protected]'
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的文檔,並參考了要求從同意屏幕代碼的用戶,但提供零文檔,說明其中的任何一個應該如何工作,並且我寧願不必處理任何用戶交互。
我通過Developers控制檯激活了那裏的API,但它根本不存在。我嘗試激活Gmail(儘管它不同),但它沒有幫助。
我是OAuth2和Python的新手,所以也許我缺少一些明顯的東西。
太棒了,看起來像它的工作。錯過了將範圍添加到ManageOauthClients URL。我從來沒有在任何地方找到這個參考。奇怪。 此外,我必須將SignedJwtAssertionCredentials中的用戶名更改爲管理員用戶名,而不是我管理的用戶的用戶名。 – IdleGod