def METHOD_NAME(self):
    """
    Attempt to find a working authentication, in order:
        - Personal access token through GITHUB_TOKEN environment variable
        - An app token through the GITHUB_APP_ID & GITHUB_KEY_B64 environment
          variables (can also use GITHUB_INSTALLATION_ID to save a request)
        - A token from macOS keychain
    """
    if "GITHUB_TOKEN" in os.environ:
        return Auth.Token(os.environ["GITHUB_TOKEN"])
    if "GITHUB_APP_ID" in os.environ and "GITHUB_KEY_B64" in os.environ:
        appAuth = Auth.AppAuth(
            os.environ['GITHUB_APP_ID'], base64.b64decode(os.environ['GITHUB_KEY_B64']).decode('ascii')
        )
        installation_id = os.environ.get('GITHUB_INSTALLATION_ID', None)
        if installation_id is None:
            # Even if we don't know the installation id, there's an API endpoint to
            # retrieve it, given the other credentials (app id + key).
            integration = GithubIntegration(auth=appAuth)
            installations = integration.get_installations()
            if len(installations) == 0:
                raise Exit(message='No usable installation found', code=1)
            installation_id = installations[0]
        return appAuth.get_installation_auth(int(installation_id))
    if platform.system() == "Darwin":
        try:
            output = subprocess.check_output(
                ['security', 'find-generic-password', '-a', os.environ["USER"], '-s', 'GITHUB_TOKEN', '-w']
            )
            if output:
                return Auth.Token(output.strip())
        except subprocess.CalledProcessError:
            print("GITHUB_TOKEN not found in keychain...")
            pass
    raise Exit(
        message="Please create a 'repo' access token at "
        "https://github.com/settings/tokens and "
        "add it as GITHUB_TOKEN in your keychain "
        "or export it from your .bashrc or equivalent.",
        code=1,
    )