python-o365 icon indicating copy to clipboard operation
python-o365 copied to clipboard

Feature request: Ability to timeout at authentication phase

Open jovimon opened this issue 1 year ago • 3 comments

Hello,

I am having trouble trying to automate the download of some emails from a mailbox.

I want the script to exit with a timeout error and warn me if the authentication cannot be completed, instead of just waiting for input at the "Paste the authenticated url here:" phase (here in the code, I guess: https://github.com/O365/python-o365/blob/master/O365/connection.py#L983).

I tried passing the timeout parameter to both the Account creation and the account.authenticate function, without success. This is the relevant part of the code.

account = Account(credentials, tenant_id=tenant_id, token_backend=token_backend, timeout=60.0) 
if not account.is_authenticated:
  if account.authenticate(scopes=scopes, timeout=60.0):
    mylogger.info('Successfully authenticated!')

And this is where it stops after being launched.

$ python test_o365.py
Visit the following url to give consent:
https://login.microsoftonline.com/[ ... ]/oauth2/v2.0/authorize?response_type=code&client_id=[ ... ]&redirect_uri=https%3A%2F%2Flogin.microsoftonline.com%2Fcommon%2Foauth2%2Fnativeclient&scope=[ ... ]&state=[ ... ]&access_type=offline&timeout=60.0
Paste the authenticated url here:

Could you possibly add a timeout feature here?

Thank you very much.

Kind regards.

jovimon avatar Sep 24 '24 10:09 jovimon

You have the Requests session object inside account.con. You can change the session to timeout. Follow Requests docs to do this

alejcas avatar Sep 30 '24 12:09 alejcas

Dear @alejcas , Thank you for your response. I'm having trouble with the input function that shows the "Paste the authenticated url here:" text, not the Requests session. For me, the best option would be that the input function has some sort of timeout, but I don't know how to implement it :(

jovimon avatar Oct 01 '24 05:10 jovimon

Ohh I see. The default auth method uses the console. There’s no possibility of a timeout there. You should implement another method that allows that. look through the readme

alejcas avatar Oct 01 '24 06:10 alejcas