我想将facebook登录添加到我现有的登录系统并记住我,我知道它应该如何运作:
检查用户是否登录到Facebook,用户是否检索用户ID并检查其是否已连接到任何帐户。如果我们得到一些数据并存储会话变量并且用户已登录。
如何注册
用户点击注册,用户进入一个页面,其中有两个选项注册并注册Facebook。
如果用户选择使用Facebook注册,则会自动填写一些信息(如电子邮件),然后用户需要填写密码和昵称。然后我们验证信息,如果它有效我们存储用户+ facebook用户ID。如果用户选择注册,我们不会自动填充,当然也不会存储Facebook用户ID。
如何检查用户是否已登录:
检查是否设置了会话变量,如果是用户已登录。如果没有,则继续执行步骤2.
检查是否存在记住我代码的cookie。如果存在,我们检查代码是否有效,如果用户正在登录。如果cookie不存在,那么我们继续执行步骤3.
检查用户是否登录facebook,如果用户是我们检索用户ID并查看它是否与db中的行匹配,如果我们存储会话变量并且用户已登录。如果不是,然后我们显示一个登录表单。
要检索Facebook用户ID,我使用以下代码:
<?php
require_once("facebook.php");
$config = array();
$config['appId'] = 'app id';
$config['secret'] = 'secret app id';
$facebook = new Facebook($config);
$uid = $facebook->getUser();
?>
问题
提前致谢!
答案 0 :(得分:5)
回答: 我认为你走在正确的轨道上。您还可以确保登录的[本机用户]可以访问注册页面并将FB帐户加入推送到用户个人资料页面或类似内容。
如facebook api文档中所述,$uid
将包含当前用户[浏览您的网站]的Facebook用户ID,或者在调用$uid = $facebook->getUser();
首先,您可以检查$ uid是否有效[not null或zero]。然后,如果通过该测试,您可以尝试通过发出$user = $facebook->api('/me')
来检索公共个人资料信息。如果已经登录到Facebook,那应该为您提供用户个人资料。如果没有,则用户可能拥有Facebook帐户但未登录。
请注意,如果未传递正确的令牌,api('/ me')可能会抛出异常,因此您应该将其包装在try-catch块中并根据您的应用程序处理异常。[也许假设用户未登录。如果您确定您的app_id和密码ID有效]
如果$ user为null,则可以通过调用$loginUrl = $facebook->getLoginUrl()
将用户重定向到[for facebook login]并重定向用户或提供可点击的URL链接。
所有这些都记录在facebook api documentation
中示例代码:
<?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();
}
}
所有这些都记录在facebook PHP客户端中,因此它是您开始的最佳选择。 Facebook在没有太多通知的情况下更改其api,因此您应该访问他们的开发人员页面,以防您的代码开始出现奇怪的行为。
希望它有所帮助!
答案 1 :(得分:1)
答案1:它是正确的方法,
答案2:使用php sdk,它已经拥有了保护你的fb登录的一切。
答案3:是的,用户需要在用户ID之前允许您的应用。
答案4:可能是因为您没有在Facebook上创建应用程序并使用演示文件中的代码。演示文件链接到网站网址为localhost
的应用。
因此,要解决此问题,请在Facebook上创建一个应用程序,提供一个站点URL(服务器的URL)。
然后它应该工作:))
欢迎提出更多问题:)