'Token type identification.
RFC 6749 does not provide a method for easily differentiating between
different token types during protected resource access. We estimate
the most likely token type (if any) by asking each known token type
to give an estimation based on the request.'

def find_token_type(self, request):

    estimates = sorted(((t.estimate_type(request), n) for (n, t) in self.tokens.items()))
    return (estimates[0][1] if len(estimates) else None)
