将facebook登录添加到现有登录系统

Sim*_*onh 5 php facebook

我想将facebook登录添加到我现有的登录系统并记住我,我知道它应该如何工作:

精简版

检查用户是否登录到facebook,用户是否检索用户ID并检查其是否已连接到任何帐户.如果我们得到一些数据并存储会话变量并且用户已登录.

长版

如何注册

  1. 用户点击注册,用户进入一个页面,有两个选项注册并注册Facebook.

  2. 如果用户选择使用facebook注册,则会自动填写一些信息(如电子邮件),然后用户需要填写密码和缺口.然后我们验证信息,如果它有效我们存储用户+ facebook用户ID.如果用户选择注册,我们不会自动填充,当然也不会存储Facebook用户ID.

如何检查用户是否已登录:

  1. 检查是否设置了会话变量,如果是用户已登录.如果没有,则继续执行步骤2.

  2. 检查是否存在记住我代码的cookie.如果存在,我们检查代码是否有效,如果用户正在登录.如果cookie不存在,那么我们继续执行步骤3.

  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();
?>
Run Code Online (Sandbox Code Playgroud)

问题

  1. 这是正确而安全的方式吗?
  2. 如果没有,你能指出我正确的方向吗?
  3. 在我获得用户ID之前,用户需要允许我的应用,对吧?
  4. 上面的代码适用于localhost,但不适用于我的服务器,每次都返回0.解?

提前致谢!

sha*_*eck 5

答案:1.我认为你走在正确的轨道上.您还可以确保登录的[本机用户]可以访问注册页面并将FB帐户联接推送到用户配置文件页面或类似的内容.

  1. 您可以轻松获取用户ID,因为它是Facebook为所有注册帐户提供的公开信息.但该用户需要允许您的应用程序才能从Facebook个人资料中获取他们的信息.但好消息是,几乎所有的工作都是由Facebook为你完成的,你只需要将用户指向正确的网址即可.还有社交插件,您可以使用Facebook注册社交插件在您的网站/应用程序上注册用户

如facebook api文档中所述,$uid将包含当前用户[浏览您的网站]的facebook用户ID或调用后的null$uid = $facebook->getUser();

首先,您可以检查$ uid是否有效[not null或zero].然后,如果通过该测试,您可以尝试通过发出一个来检索公共配置文件信息$user = $facebook->api('/me').如果已经登录到Facebook,那应该为您提供用户个人资料.如果没有,则用户可能拥有Facebook帐户但未登录.

请注意,如果未传递正确的令牌,api('/ me')可能会抛出异常,因此您应该将其包装在try-catch块中并根据您的应用程序处理异常.[也许假设用户不是登录.如果您确定您的app_id和密码有效]

如果$ user为null,那么您可以通过调用$loginUrl = $facebook->getLoginUrl()和重定向用户或提供可点击链接到URL 来获取URL以将用户重定向到[for facebook login] .

所有这些都记录在facebook api文档中

示例代码:

<?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();
    }
}
Run Code Online (Sandbox Code Playgroud)

所有这些都记录在facebook PHP客户端中,因此它是您开始的最佳选择.Facebook在没有太多通知的情况下更改其api,因此您应该访问他们的开发人员页面,以防您的代码开始出现奇怪的行为.

希望能帮助到你!