def callback()

in dialogflow-cx/vpc-sc-auth-server/server/app.py [0:0]


def callback():
    """Callback route, redirects to the user-provided return_to URL."""
    args = request.args.to_dict()
    state = json.loads(b64decode(args["state"]))
    redirect_path = state["return_to"]
    session_id = state["session_id"]
    data = {
        "code": args["code"],
        "client_id": os.getenv("CLIENT_ID"),
        "client_secret": access_secret_version(
            project_id, "application-client-secret", "latest"
        )["response"],
        "redirect_uri": get_redirect_url(),
        "grant_type": "authorization_code",
    }

    resp = requests.post(
        "https://oauth2.googleapis.com/token",
        data=data,
        timeout=10,
    ).json()

    info = id_token.verify_oauth2_token(resp["id_token"], reqs.Request())

    session.create(
        {
            "id_token": resp["id_token"],
            "access_token": resp["access_token"],
            "refresh_token": resp["refresh_token"],
            "email": info["email"],
            "expiration": info["exp"],
            "origin": redirect_path,
        },
        session_id=session_id,
        public_pem=state["public_pem"],
    )

    if session_id is None:
        logger.critical("Could not create session")
        return Response(status=403)

    response = redirect(redirect_path)
    return response