I recommend that you look at the actual exchanges that are taking place. That is, when your service redirects the user to the provider, finds out what parameters are sent, and then, when the user returns, also find out which parameters are transferred.
In OpenID 2, there are two ways to request user information: Exchange attribute (AX) and Simple registration (SREG). Not sure what SIG is. Regardless of whether the providers implement these protocols and what information they provide, it is their choice (first, and then, I hope, the choice of the user).
I found that Google supports AX and always provides an email address, and sometimes a username and last name. In my experience, Yahoo provides nothing but the declared identifier. As a result, I do not accept Yahoo as a provider, see http://pypi.python.org/pypi?:action=openid
source share