<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def oauth_authentication_flow(client_id, client_secret, scopes=None, protocol=None, **kwargs):
 """ 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 """


    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