Twitter 社交登录和保留访问权限而不必每次都进行身份验证……这可能吗?

Twitter 社交登录和保留访问权限而不必每次都进行身份验证……这可能吗?,twitter,facebook,oauth,Twitter,Facebook,Oauth,我即将开始一个新项目,构建一个具有许多不同功能的web UI。不过,部分功能包括更新和访问某些社交媒体网站的能力——主要是Facebook和Twitter 我希望用户登录到系统,然后还能够管理多个FB/Twitter帐户,这样他们就可以从一个地方与这些帐户进行交互,而无需在每次做某事时进行身份验证。出于安全原因,我显然不想存储密码,但我不知道该怎么做 我知道这是可能的——有人对如何进行这项工作有什么建议吗 仅供参考-我正在用PHP、Javascript/Jquery编程。提前谢谢 这里是Face

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

我希望用户登录到系统,然后还能够管理多个FB/Twitter帐户,这样他们就可以从一个地方与这些帐户进行交互,而无需在每次做某事时进行身份验证。出于安全原因,我显然不想存储密码,但我不知道该怎么做

我知道这是可能的——有人对如何进行这项工作有什么建议吗


仅供参考-我正在用PHP、Javascript/Jquery编程。提前谢谢

这里是Facebook部分。一个简单的好方法是使用facebookphpsdk()。所以你会有这样的想法:

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 ?>
您可能需要检查记录良好的


希望能有所帮助。

谢谢您的快速回复!如果我读对了,我可以使用访问令牌防止重新验证。我还发现了一些关于请求脱机访问权限以具有无限到期时间()的内容。我不知道为什么,但FB集成一直是我的致命弱点——对我来说,这似乎并不直接。再次感谢!访问令牌存储在用户cookie中,因此只要令牌在Facebook端没有过期(几个小时),并且用户没有注销Facebook,您就可以进行API调用。当代币到期时,用户将不得不再次单击“使用Facebook登录”,但不会向他询问任何问题,因为他已登录Facebook,并且已给予授权。如果您在生成登录链接(
$facebook->getLoginUrl($args)
whith
$args['scope']=offline\u acces
)时请求
脱机访问权限,则颁发的令牌将永远不会过期:您可能希望将其存储在数据库中。
$user_profile = $facebook->api('/me');