我想在我的网站上实现 facebook connect。我已使用 oauth api 来获取应用程序的权限请求。
但是,我遇到了以下问题。
如果用户第一次使用 facebook connect 登录我的网站,我需要为他(在我的网站上)创建一个新的用户名/密码,以便能够浏览我的网站并设置所有 session 变量。但是,我应该使用什么作为用户名/密码? 据我了解,Facebook 用户可以更改其电子邮件地址。
我如何处理第二次或第三次使用 facebook connect 登录的用户(他们已经是我网站的成员(member))?我不需要在我的网站上为他们创建用户,因为当他第一次登录时它已经创建了。我是否检查电子邮件地址以查看数据库中是否存在 Facebook 用户的电子邮件地址?此外,还有同样的问题,Facebook 用户可以更改他的电子邮件地址。
对于 Facebook 用户来说,有哪一件事不会改变,我可以将其用作他的用户名?另外,我该用他的密码吗?另外,我知道如果我使用可用应用程序数据中的用户名/密码,那么使用正常机制用户也可以登录我的网站。我该如何防止这个安全漏洞?
请帮忙。
最佳答案
我使用Facebook在回调中发送的信息(Facebook唯一用户ID或普通ID),然后检查该用户是否在我的数据库中,如果没有,我插入他,但我将密码或用户电子邮件等其他内容留空(您也可以请求该信息,检查 php api 中的第 418 行并添加“'req_perms' => 'email'”),因为我可以在它们再次连接时检索该数据,然后像往常一样设置 session 。 如果用户更改了电子邮件,只需在每次登录时检查并更新数据即可。 示例:
$facebook = new Facebook(array(
'appId' => 'xxxxxxxxx',
'secret' => 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
'cookie' => true,
));
$session = $facebook->getSession();
$me = null;
// Session based API call.
if ($session) {
try {
$uid = $facebook->getUser();
$me = $facebook->api('/me');
} catch (FacebookApiException $e) {
error_log($e);
}
}
// login or logout url will be needed depending on current user state.
if ($me) {
$logoutUrl = $facebook->getLogoutUrl();
} else {
$loginUrl = $facebook->getLoginUrl();
}
if ($me) {
if (!isset($_SESSION["usr_id"])){
$_SESSION["usr_id"] =$me['id'];
$_SESSION["usr_name"]=$me['name'];
// or do your sql verification and then set the sessions
}
}
/////////////////////////////////////////////
关于facebook - 使用 facebook 连接问题登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4982062/