社交登录和保留访问权限,无需每次都进行身份验证......是否可能?

时间:2011-05-28 14:58:23

标签: twitter facebook oauth

我即将开始一个新项目,构建一个具有许多不同功能的Web UI。然而,部分功能包括更新和访问某些社交媒体网站的能力 - 主要是Facebook和Twitter。

我希望用户登录系统,然后还能够管理多个FB / Twitter帐户,以便他们可以从一个地方与这些帐户进行交互,而无需在每次进行操作时进行身份验证。出于安全考虑,我显然不想存储密码,但我不确定如何处理这个密码。

我知道这是可能的 - 有没有人有任何指示如何解决这个问题?

仅供参考 - 我正在使用PHP,Javascript / Jquery进行编程。提前谢谢!

1 个答案:

答案 0 :(得分:1)

这是Facebook的一部分。一个好的,简单的方法是使用Facebook PHP SDK(see on github)。所以你会有类似的东西:

require "facebook.php";
$facebook = new Facebook(array(
    'appId'  => YOUR_APP_ID,
    'secret' => YOUR_APP_SECRET,
));

$user = $facebook->getUser();

如果用户已登录,则$user是他的Facebook ID。然后,您必须通过进行API调用来检查您是否拥有有效的访问令牌:

  • 如果它没有引发任何异常,那么您有一个有效的访问令牌

  • 如果是,则必须重新验证用户。

你走了:

if ($user) {
  try {
    $facebook->api('/me');
  } catch (FacebookApiException $e) {
    $user = null;
  }
}

然后,您需要显示登录或注销链接:

<?php if ($user): ?>
    <a href="<?php echo $facebook->getLogoutUrl() ?>">Logout of Facebook</a>
<?php else: ?>
    <a href="<?php echo $facebook->getLoginUrl() ?>">Login with Facebook</a>
<?php endif ?>

当用户登录并且您拥有有效的访问令牌时,您可以进行API调用以从Facebook获取数据:

$user_profile = $facebook->api('/me');

您可能需要查看记录良好的example page of the Facebook PHP SDK

希望有所帮助。