使用openid-selector实现没有第三方的社交登录

时间:2011-11-21 18:22:03

标签: php facebook twitter oauth openid

我在本网站上查看过大约50个问题,但没有一个真正提供最新或不需要第三部分插件的解决方案(我希望控制信息而不是给其他人访问我得到的信息)或完成。我会冒险发布它,然后交叉手指。

我见过更多但是我看到了一些:

所以我希望在我的网站上有 Facebook,Google和Twitter作为登录选项(显然,这是人们首选的社交登录方式的80%)。 如果我去 wiki.openid.net,你建议我使用哪个软件包以便于实现?你过去使用过哪一个?

另外,如果可能的话,您能解释一下如何实施建议的库吗?即,

  1. 我下载它,把它放在我的网站上,
  2. 然后为我的网站获取openID,
  3. 然后使用http://code.google.com/p/openid-selector/作为 显示...
  4. 这是对的吗?我不知道......

    基本上一步一步的指南会很棒。我敢肯定,任何花时间回答这个问题的人都会获得大量积分,这是一个热门话题。

    感谢您的帮助。

3 个答案:

答案 0 :(得分:11)

因此,您希望在不使用第三方服务的情况下实施Google和Facebook / Twitter登录。这意味着您需要实施OpenID登录(针对Google)和OAuth(针对Facebook / Twitter)。

第一个OpenID。您可以为PHP下载LightOpenID一个很好的轻量级OpenID类。很容易实现。一些samplecode如何使用这个类。

// Set up your OpenID object
$openid = new LightOpenID('http://yourdomain.com');
$openid->returnUrl = 'http://yourdomain.com/after/login/user/goes/here';
$openid->identity = 'https://www.google.com/accounts/o8/id'; // OpenID provider URL
$openid->required = array('namePerson/friendly', 'contact/email');

// Step 1: Redirect the user to the OpenID provider
if (!$openid->mode) // If not authenticated
    header('Location: ' . $openid->authUrl()); // Redirect to provider

// Step 2: User returned, sign the user into our application
if ($openid->validate()) { 
    // OpenID authentication is successful
    // Sign in the user and read requested attributes
    $attrArray = $openid->getAttributes();
}

这应该让你开始使用OpenID部分。 OpenID选择器只不过是身份URL的选择器。

然后实施OAuth登录以支持Facebook和Twitter登录。有一些关于如何实施Facebook和Twitter登录支持的文档。 对于Facebook,您应该阅读developer site on authentication它并不太复杂。 Twitter使用相同的协议,并且在此主题上也有nice documentation

如果您不想自己实现它,请查看您可以在应用程序中包含的OAuth库,如socialoauth(支持两者)或twitteroauth(支持twitter)。谷歌将帮助您找到更多这样的图书馆。

刚开始使用库实现读取代码,注释和文档,如果卡住了就在StackOverflow上提问。 :)

答案 1 :(得分:0)

这个HybirdAuth似乎更酷:

请查看:http://hybridauth.sourceforge.net/

获得GPL和麻省理工学院的许可。如果你们中的任何人都知道更好的话,请分享。

答案 2 :(得分:0)

嘿,还请查看此社交登录提供商OneAll。它很棒,易于使用。支持许多提供商。这是链接http://www.oneall.com/