(msg, request, access_token)
return None
Get the next challenge from msg and run it.

    Args:
        msg (dict): Reauth API response body (either from the initial request to
            https://reauth.googleapis.com/v2/sessions:start or from sending the
            previous challenge response to
            https://reauth.googleapis.com/v2/sessions/id:continue)
        request (google.auth.transport.Request): A callable used to make
            HTTP requests. This must be an aiohttp request.
        access_token (str): reauth access token

    Returns:
        dict: The response from the reauth API.

    Raises:
        google.auth.exceptions.ReauthError: if reauth failed.
Get the next challenge from msg and run it.
Get the next challenge from msg and run it .
async def _run_next_challenge(msg, request, access_token):
    """Get the next challenge from msg and run it.

    Args:
        msg (dict): Reauth API response body (either from the initial request to
            https://reauth.googleapis.com/v2/sessions:start or from sending the
            previous challenge response to
            https://reauth.googleapis.com/v2/sessions/id:continue)
        request (google.auth.transport.Request): A callable used to make
            HTTP requests. This must be an aiohttp request.
        access_token (str): reauth access token

    Returns:
        dict: The response from the reauth API.

    Raises:
        google.auth.exceptions.ReauthError: if reauth failed.
    """
    for challenge in msg["challenges"]:
        if challenge["status"] != "READY":
            # Skip non-activated challenges.
            continue
        c = challenges.AVAILABLE_CHALLENGES.get(challenge["challengeType"], None)
        if not c:
            raise exceptions.ReauthFailError(
                "Unsupported challenge type {0}. Supported types: {1}".format(
                    challenge["challengeType"],
                    ",".join(list(challenges.AVAILABLE_CHALLENGES.keys())),
                )
            )
        if not c.is_locally_eligible:
            raise exceptions.ReauthFailError(
                "Challenge {0} is not locally eligible".format(
                    challenge["challengeType"]
                )
            )
        client_input = c.obtain_challenge_input(challenge)
        if not client_input:
            return None
        return await _send_challenge_result(
            request,
            msg["sessionId"],
            challenge["challengeId"],
            client_input,
            access_token,
        )
    return None
async def _run_next_challenge ( msg , request , access_token ) : for challenge in msg [ "challenges" ] : if challenge [ "status" ] != "READY" : # Skip non-activated challenges. continue c = challenges . AVAILABLE_CHALLENGES . get ( challenge [ "challengeType" ] , None ) if not c : raise exceptions . ReauthFailError ( "Unsupported challenge type {0}. Supported types: {1}" . format ( challenge [ "challengeType" ] , "," . join ( list ( challenges . AVAILABLE_CHALLENGES . keys ( ) ) ) , ) ) if not c . is_locally_eligible : raise exceptions . ReauthFailError ( "Challenge {0} is not locally eligible" . format ( challenge [ "challengeType" ] ) ) client_input = c . obtain_challenge_input ( challenge ) if not client_input : return None return await _send_challenge_result ( request , msg [ "sessionId" ] , challenge [ "challengeId" ] , client_input , access_token , ) return None