Php 将facebook登录添加到现有登录系统
我想用Remembery me将facebook登录添加到我现有的登录系统中,我知道它应该如何工作: 短版 检查用户是否登录到facebook,如果用户是我们检索的用户id,并检查它是否连接到任何帐户。如果是,我们会获取一些数据并存储会话变量,然后用户登录 长版本 如何注册Php 将facebook登录添加到现有登录系统,php,facebook,Php,Facebook,我想用Remembery me将facebook登录添加到我现有的登录系统中,我知道它应该如何工作: 短版 检查用户是否登录到facebook,如果用户是我们检索的用户id,并检查它是否连接到任何帐户。如果是,我们会获取一些数据并存储会话变量,然后用户登录 长版本 如何注册 用户点击注册,用户进入一个页面,页面上有两个选项:注册和使用facebook注册 如果用户选择注册facebook,则某些信息将自动填写(如电子邮件),然后用户需要填写密码和密码。然后我们验证信息,如果有效,我们存储用户+f
<?php
require_once("facebook.php");
$config = array();
$config['appId'] = 'app id';
$config['secret'] = 'secret app id';
$facebook = new Facebook($config);
$uid = $facebook->getUser();
?>
<?php
require_once("facebook.php");
$config = array();
$config['appId'] = 'app id';
$config['secret'] = 'secret app id';
$facebook = new Facebook($config);
$uid = $facebook->getUser();
?>
问题
$uid
将包含当前用户[浏览您的网站]的facebook用户id,或者在调用$uid=$facebook->getUser()后为null代码>
首先,您可以检查$uid是否有效[不为null或零]。然后,如果is通过了该测试,您可以通过发出$user=$facebook->api('/me')
来尝试检索公共配置文件信息。如果用户已经登录到facebook,则应提供您的用户配置文件。如果没有,那么用户可能有一个facebook帐户,但没有登录
请注意,如果未传递正确的令牌,api(“/me”)可能引发异常,因此您应该将其包装在try-catch块中,并根据您的应用处理异常。[可能假设用户未登录。如果您确定您的应用程序\u id和机密id有效]
如果$user为null,则您可以通过调用$loginUrl=$facebook->getLoginUrl()
获取url以将用户重定向到[用于facebook登录],并重定向用户或提供指向url的可单击链接
所有这些都记录在
示例代码:
<?php
require_once("facebook.php");
$config = array();
$config['appId'] = 'app id';
$config['secret'] = 'secret app id';
$facebook = new Facebook($config);
$uid = $facebook->getUser();
if( ! $uid){ // we have an id
try{
$user = $facebook->api('/me'); //get the current user's FB public profile
if($user){ // we have a valid user who is logged in to his facebook account
$logoutURL = $facebook->getLogoutUrl(); // user
}
}catch(FacebookApiException $e){
$user = null;
$loginURL = $facebook->getLoginUrl();
}
}
回答1:这是正确的方法,
回答2:使用PHPSDK,它已经具备了保护fb登录的所有功能。
回答3:是的,用户需要先允许您的应用,然后才能访问用户id。
回答4:可能是因为你没有在facebook上创建应用程序,也没有使用演示文件中的代码。演示文件链接到一个应用程序,该应用程序的站点url为localhost
。
所以,要解决这个问题,在facebook上创建一个应用程序,给出一个站点url(服务器的url)。
那么它应该会起作用:)
欢迎提出更多问题:)“如果用户选择使用facebook注册,则某些信息将自动填写(如电子邮件),然后用户需要填写密码和nick。”您的思路正确,但我只是想说,让用户在已经使用facebook凭据登录时设置密码会适得其反。用户选择Facebook登录按钮是因为它比管理不同站点的多个密码更简单、更安全。谢谢您的评论!我希望用户设置密码有几个原因。1.我不想依赖其他服务。2.如果我有时选择删除facebook,那么许多帐户将丢失。3.用户停用facebook帐户,则用户无法登录我的网站。4.当用户更改电子邮件、密码等内容时,用户需要输入密码。但我想要facebook登录,这样用户只需按一个按钮即可登录。谢谢您的评论!我有和应用程序,我已经填写了所有必需的信息。在本地主机上可以工作,在服务器A上可以工作,但在服务器B上不工作。当我在服务器上测试它时,我已经更改了所需的信息。谢谢你的回答!是的,这确实帮了我的忙!它现在起作用了,当用户登录时,我得到了id,当用户从facebook注销时,用户就在我的网站上注销了。当用户从我的网站注销时,用户仍然在facebook上登录。所以它就像我想要的那样工作。我只有一个“问题”,那就是保持用户登录。我想唯一的解决方案是创建一个唯一的代码,就像我为使用user/pw登录并选中rembember me的用户所做的那样。如果您不想在每个请求上查询Facebook API,即使用户同时登录到两个Faceboo