code: def oauth_authentication_flow(client_id, client_secret, scopes=None,
                                protocol=None, **kwargs):
      
  
      credentials = (client_id, client_secret)
  
      protocol = protocol or MSGraphProtocol()
  
      con = Connection(credentials, scopes=protocol.get_scopes_for(scopes),
                       **kwargs)
  
      consent_url = con.get_authorization_url(**kwargs)
      print('Visit the following url to give consent:')
      print(consent_url)
  
      token_url = input('Paste the authenticated url here: ')
  
      if token_url:
          result = con.request_token(token_url, **kwargs)
          if result:
              print('Authentication Flow Completed. Oauth Access Token Stored. '
                    'You can now use the API.')
          else:
              print('Something go wrong. Please try again.')
  
          return bool(result)
      else:
          print('Authentication Flow aborted.')
          return False
docs: A helper method to perform the OAuth2 authentication flow.
      Authenticate and get the oauth token
  
      :param str client_id: the client_id
      :param str client_secret: the client_secret
      :param list[str] scopes: a list of protocol user scopes to be converted
       by the protocol or raw scopes
      :param Protocol protocol: the protocol to be used.
       Defaults to MSGraphProtocol
      :param kwargs: other configuration to be passed to the Connection instance,
       connection.get_authorization_url or connection.request_token
      :return: Success or Failure
      :rtype: bool