Take the 2-minute tour ×
Stack Overflow is a question and answer site for professional and enthusiast programmers. It's 100% free, no registration required.

I have built a social networking app in rails, and am looking for a simple way to allow users to login to their various other accounts (OAuth?) such as facebook, twitter, gmail, other mail clients, etc and see if their friends/contacts on those sites are signed up for my site.

Additionally I will be adding functionality to allow users to invite their non-signed up friends to my site via these same sites.

In the future I will also want to make it so that users can post their submissions on my site to these various other sites.

At this moment though, the most important feature is enabling users to see which of their contacts on these other sites are signed up for my site.

What is the best way to go about this? What gems should I be looking for (OAuth, RFacebook, Facebooker, etc).

I am currently using restful authentication (Also, can someone point me in the direction of a question that answers how to allow users to sign in, using restful authentication, using their username OR their email?)

Thanks!

share|improve this question

3 Answers 3

up vote 2 down vote accepted

It's been ages since this was posted, but I felt it might be relevant to anyone who happens upon this question, the best way to do this is using the https://github.com/intridea/omniauth gem.

For invites you should take a look at https://github.com/Diego81/omnicontacts.

Also, if you are using a newer version of Rails and devise then you should check out this screen cast by Ryan Bates on using omniauth with Devise http://railscasts.com/episodes/235-devise-and-omniauth-revised.

share|improve this answer

I used omniauth gem for oauth authentication and then used fb_graph to fetch friend list from facebook. And i guess contact gem would help pulling friends from gmail, ymail and etc.

share|improve this answer

I think you'll find that each service has its own API and it will be up to you to connect your application individually to each service.

Here are the API docs for Facebook, Twitter and GMail

Just Google "<Site name> API"

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.
{"cc_re__cc_re__cc_by_sa_3_0": ["        <li><a href=\"http://area51.stackexchange.com\" title=\"proposing new sites in the Stack Exchange network\">Area 51</a></li>\r\n                        <li><a href=\"http://careers.stackoverflow.com\">Stack Overflow Careers</a></li>\r\n                    \r\n                </ol>\r\n            </td>\r\n    </tr>\r\n</table>\r\n                </div>\r\n            </div>\r\n\r\n            <div id=\"copyright\">\r\n                site design / logo &#169; 2014 stack exchange inc; user contributions licensed under <a href=\"http://creativecommons.org/licenses/by-sa/3.0/\" rel=\"license\">cc by-sa 3.0</a> \r\n                with <a href=\"http://blog.stackoverflow.com/2009/06/attribution-required/\" rel=\"license\">attribution required</a>\r\n            </div>\r\n            <div id=\"svnrev\">\r\n                rev 2014.8.19.1789\r\n            </div>\r\n            \r\n        </div>\r\n    </div>\r\n    <noscript>\r\n        <div id=\"noscript-warning\">Stack Overflow works best with JavaScript enabled<img src=\"http://pixel.quantserve.com/pixel/p-c1rF4kxgLUzNc.gif\" alt=\"\" class=\"dno\"></div>\r\n    </nos"], "copyright__copyright__copyright": [" from gmail, ymail and etc.\n\nshare|improve this answer\n\nI think you'll find that each service has its own API and it will be up to you to connect your application individually to each service.\n\nHere are the API docs for Facebook, Twitter and GMail\n\nJust Google \"<Site name> API\"\n\nshare|improve this answer\n\nYour Answer\n\n\u00a0\ndiscard\n\nBy posting your answer, you agree to the privacy policy and terms of service.\n\nNot the answer you're looking for? Browse other questions tagged or ask your own question."]}