9

I wrote a Python script(Google_add.py) which creates users in the Google Workspace. However, When it is run, an AttributeError occurred. How do I resolve this Error?

・Google_add.py (Excerpt)

PATH = '/opt/Google/credentials.json'
CLIENT_SECRETS = '/opt/Google/client_secrets.json'
credentials = None

#If there are credentials
if os.path.exists(PATH):
    credentials = Credentials.from_authorized_user_file(
      path = PATH,
      scopes = SCOPES)

#If there are no (valid) credentials available
if not credentials or not credentials.valid:
    if credentials and credentials.expired and credentials.refresh_token:
      credentials.refresh(Request())
    else:
      FLOW = flow.InstalledAppFlow.from_client_secrets_file(
        client_secrets_file = CLIENT_SECRETS,
        scopes = SCOPES)
      credentials = FLOW.run_console()
    with open(PATH, 'w') as token:
      token.write(credentials.to_json())

・Error Message

File "Google_add.py", line 186, in <module>
main()
File "Google_add.py", line 172, in main
FLOW.run_console()
AttributeError: 'InstalledAppFlow' object has no attribute 'run_console'

I refer the below site when I wrote it. https://github.com/googleapis/google-api-python-client/blob/main/docs/oauth-installed.md#sending-users-to-googles-oauth-20-server https://developers.google.com/admin-sdk/directory/v1/quickstart/python?hl=en

In the script, I want to authorize using the user account(not service account). And "run_local_server()" method doesn't work because my linux server isn't a web server (doesn't have httpd, nginx and so on).

(I'm sorry if my writing is hard to read.)

Anonymous
  • 115
  • 1
  • 5
  • In any case, have you seen this [github](https://github.com/xyou365/AutoRclone/issues/101) post that has the same problem as yours? One of the comments suggested that the versions of installed packages be changed. – George Mar 02 '23 at 06:51
  • 1
    Thank you! The script runs successfully by changing the versions of google-api-python-client, google-auth, google-auth-httplib2, and google-auth-oauthlib. – Anonymous Mar 02 '23 at 11:10
  • I'm glad it worked, let me compose it as an answer. By doing so, other people in the community, who may have the same concern as you, will know that theirs can be resolved. – George Mar 02 '23 at 23:54

2 Answers2

8

Expanding on George's answer above, the versions of the library from the github post that work are:

google-api-python-client==1.7.2
google-auth==1.8.0
google-auth-httplib2==0.0.3
google-auth-oauthlib==0.4.1
Benjamin Loison
  • 3,782
  • 4
  • 16
  • 33
Att Righ
  • 1,439
  • 1
  • 16
  • 29
5

The issue may have been a version compatibility issue of google-api-python-client library with other libraries like

  • google-auth
  • google-auth-httplib2
  • google-auth-oauthlib

You just need to make sure that the version of your google-api-python-client supports the versions you have installed to its dependency libraries. You can view the full change log of google-api-python-client library here

References:

google-api-python-client change log

https://googleapis.github.io/google-api-python-client/docs/auth.html

https://googleapis.github.io/google-api-python-client/docs/oauth.html

google-api-python-client

google_auth_oauthlib.flow module

Github post similar issue

George
  • 1,196
  • 1
  • 2
  • 10