【Google OAuth】AttributeError: 'InstalledAppFlow' object has no attribute 'run_console'

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.

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.)

3

4 Answers

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 

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

google-api-python-client

google_auth_oauthlib.flow module

Github post similar issue

1

You said:

"run_local_server()" method doesn't work because my linux server isn't a web server (doesn't have httpd, nginx and so on).

This isn't true. The solution below will work also on non-web servers, your local machine, local scripts etc... However, you need a way to open a browser. If not, you can create the token on your local machine and copy the token to your server.

Replace: credentials = FLOW.run_console()

with: credentials = FLOW.run_local_server(port=0)

This will work perfectly in all situations.

For more info, refer to

The run_console() (OOB) flow has been deprecated by Google, that's why it was removed from newer versions of the Google OAuth connector

Replace the line

credentials = FLOW.run_console() 

to

credentials = FLOW.run_local_server() 


people also got it working by these configurations:

google-api-python-client==1.7.2 google-auth==2.14.1 google-auth-httplib2==0.0.3 google-auth-oauthlib==0.4.1 

git link :

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

You Might Also Like