OAuth providers that return an email address - ruby-on-rails-3

I'm just getting started setting up OAuth authentication in Ruby on Rails using Devise and so far have successfully setup Yahoo, Google and Facebook sign-in.
My goal is to provide one-click registration, so I need the providers to return an email address and was disappointed to learn that Twitter and LinkedIn do not return an email address. I've seen tutorials for "completing the registration process", but for my site that would defeat the purpose of one-click registration.
Are there any other OAuth providers that return an email address besides the ones previously mentioned that can be used for this purpose?
Thanks!

By the way Google's OAuth 2.0 authentication endpoints does return the email address if you request it, along with other useful data such as the user's picture, first and last name, birthday etc...
The documentation is here: https://developers.google.com/accounts/docs/OAuth2Login

LinkedIn's API does provide email ID if you ask for it. As far as I know, only Twitter doesnt send the email ID.
Yes, it is indeed a pain in the neck. I had to create a separate 'checkpoint' flow for a Twitter user's first-time login to my app and ask for the email ID.

Related

Twitter API: allow authenticated user to post tweets on another user's behalf

Twitter API allows to update "the authenticating user’s current status", as explained in the documentation page.
What I'd like to achieve instead is to update another user's current status. Consider a magazine's twitter account. I'd like different people to be able to update the magazine's status. Tweetdeck allows this, but it also allows a whole lot of other things like access to Direct Messages. I only want to provide certain authenticated users an interface (similar to Twitter's post-a-tweet interface) to post status and images to the shared account.
I could not find a simple explanation of how to use Twitter API to achieve the above functionality. Could someone please help?
If you have an app that implements the status update API and it is delivered to different people and they authorize the app with the magazine's twitter account, then the app will update that status. I can show an example also with code if this is what you're asking. However the main point is that, once a user has authorized the app, she/he doesn't need to be connected with the shared login any longer because the app will do that on the magazine's behalf.
BTW, similar question here: Twitter API: post on behalf of whom?
Edit
Just to summarize the comments:
The standard OAuth authentication requires the following main steps
1) to develop an app (registered with OAuth consumer key and secret) that implements the API update status 2) to install and authorize the app: during this step the onwer will be requested to enter the credentials of the passive account in a Twitter link opened with the browser, 3) then - after a fallback - the app will store the access token and any user of the app will be able to update the status without login
Once you have developed an app that can post tweets on behalf of a passive twitter account using the standard OAuth, you could make that functionality available to the authenticated users of a website.

What's the best user login management when handling multiple login sources?

I'm currently designing a website (on google app engine) in which user can register from multiple sources (classic registration, google account login, facebook login, or maybe OpenID or OAuth).
I'm a bit confused with all this, i don't know what's the best behavior for this.
Should i try to associate accounts automatically when using the same email address ?
Should i dissociate accounts (meaning that if you use Google login when you registrated with classic user/password, it will fail) ?
Should i send verification emails for classical registration, or allow user to use the website and just send a "welcome" email ?
I'd like the website to be as easy as possible, but we may put some commercial features on it later. Do you have any advice on the user auth system to develop ?

Application name on requesting login using oauth

My ASP.NET MVC has login with Google, Facebook and Microsoft. It works fine. But when the user tries to login with gmail, the next message is shown in the google login page:
IP_ADDRESS_SERVER is asking for some information from your Google Account. To see and approve the request, sign in. Learn more
Instead of showing the ip address, I would like to show the application name or the domain, something like:
MyWebApplication is asking for some information from your Google Account. To see and approve the request, sign in. Learn more
or
www.mywebsite.com is asking for some information from your Google Account. To see and approve the request, sign in. Learn more
How can I achieve that? Should I change some configuration in the application?
You need to register the application with Google.

How to get email id of logged in user in Yii?

I am implementing login through social networks in my Yii site. I am using gmail, linkedin, twitter and facebook. I need to get the email of the users who are logging in to my site using these networks. I am able to get the email of the facebook user. But not the other networks. How can I get it ?
This is not a Yii specific question (imo) but for the legacy of actually searching, people might end up on this post, looking for a Yii solution:
You should have a look at the yii-eoauth extention.
You will need to do the handshakes first to authenticate the users and afterwards you will be able to get the required details.
oAuth for Facebook
oAuth for twitter
oAuth for Google
oAuth for Linked In

Important ask about authentication

could you tell me if when somebody is on my application on Facebook, then I can know what ID number this user has or what email this user uses to login on Facebook? It is important for me, because i would like to know if i can authorize my apps user without oAuth2.0.
you need to get the permission befoer you get the id / email.
As of today, if you don't want to use OAuth 2.0, simply handle that via the legacy authentication flow