Instead of returning the last token provided return the first.
In case of multiple supporting providers the authentication will be attempted several times.
This happens with the current FacebookBundle for example but could happen with others too. The result was that the first provided token held all appropriate roles while a second one did not.