oauth2client deprecated
dotysan opened this issue · comments
Symptom
Nowadays pip install --upgrade google-api-python-client PyOpenSSL
will cause our script to fail like this:
Traceback (most recent call last):
File "./import-mailbox-to-gmail.py", line 36, in <module>
from oauth2client.service_account import ServiceAccountCredentials
ImportError: No module named oauth2client.service_account
Cause
The google-api-client no longer requires/installs oauth2client package.
Workaround
pip install --upgrade google-api-python-client PyOpenSSL oauth2client
Discussion
https://google-auth.readthedocs.io/en/latest/oauth2client-deprecation.html
It looks like oauth2client.service_account.ServiceAccountCredentials.from_json_keyfile_name()
has moved to google.oauth2.service_account.Credentials.from_service_account_file()
but the new Credentials
class doesn't define an authorize()
function. It appears we'll need to use google_auth_httplib2.AuthorizedHttp(credentials)
instead. But I'm not sure.
Additionally, I can't find any replacement for oauth2client.tools.argparser
so I guess a workaround would be to disable the inheritance of the --auth*
--noauth*
args? Yuk!
I looked for a long time to figure out this issue. My recommendation is to just use GYB with the --service-account flag