Friday, 14 May 2021

is there a way to parse python-flask oauth2

I have code something like below -

app = Flask(__name__)


# access token
access_token = None


@app.route('/getcode')
def get_authorization_url():
    oauth = OAuth2Session(client_id, redirect_uri=redirect_uri, scope=scope)
    authorization_url, _state = oauth.authorization_url(authorization_base_url, access_type="authorization_code")
    print('authorization_url')
    print(authorization_url)
    return redirect(authorization_url)


@app.route('/')
def callback():
    global access_token
    oauth = OAuth2Session(client_id, redirect_uri=redirect_uri, scope=scope)
    token = oauth.fetch_token(token_url, authorization_response=request.url, client_secret=client_secret)
    access_token = token['access_token']
    print('access token is:', access_token)

    ## we will be shutting down the server after getting access_token
    ## the thread created here is copied in if __name__ == '__main__' block
    ## and will run after closing the server

    # th = threading.Thread(target=data_from_resource_server, args=(access_token,))
    # th.start()

    func = request.environ.get('werkzeug.server.shutdown')
    if func:
        print('stoping server')
        func()


    return 'see terminal for logs'


if __name__ == '__main__':
    app.secret_key = 'example'
    app.env = 'development'
    print()
    print('Open this url in browser:', 'http://127.0.0.1/getcode', end='\n\n')

    app.run(host='127.0.0.1', port='80')

    print('server stopped')

    ## got access_token, closed the server, now running ray integration code
    if access_token:
        th = threading.Thread(target=data_from_resource_server, args=(access_token,))
        th.start()

Here when app.run(host='127.0.0.1', port='80') runs gives me URL - http://127.0.0.1/getcode. I need to mannually open enter username and password and again then one more window comes to enter YOB, which then give me something like -

127.0.0.1 - - [04/May/2021 21:20:23] "GET /**getcode?code=G7h_QL0Cpo3kEqyyNBZ68DTX3JhQ_6E6sl_Sk1x5iBc.oG4JFQiKyZGupTuJ-bV6qE9lA**&scope=orders&state=M6hdb7EJxgNKkuBqbihg1SKaUGAJ7W HTTP/1.1" 302  

Here My question is there a way to avoid doing this manually opening the browser and enter credentials and get the code. can we parse the entire thing in python?



from is there a way to parse python-flask oauth2

No comments:

Post a Comment