用facebook登录取代drupal注册和登录

时间:2011-12-06 19:14:53

标签: facebook drupal

我正在尝试为我的d6网站开发一个自定义模块,让用户注册并登录我的网站,就像普通用户使用现有的drupal登录和注册系统一样。

我查看了fbconnect module(尚未更新以使用最新的facebook php sdk [ver 3]),以及drupal for facebook将Facebook登录信息映射到现有用户ID(如果是drupal用户)存在相同的电子邮件 - 这不是我要找的。

我想做什么:

  • 用户来到我的网站。点击登录facebook。
  • 他会看到fb登录弹出窗口。用户授予权限。
  • 此时我将他注册到该网站,并将他登录。
  • 他现在可以访问为经过身份验证的用户设置的所有权限,以创建帖子等。
  • 他退出了。再次回来登录,这次他第一次创建的所有内容都可供他使用,就像经常认证的用户一样。

我无法可视化模块结构。 我怎么做到这一点?我知道我需要使用here提到的服务器端身份验证。

我非常精通创建Drupal模块,只是很难想到这个架构。如果有人对此有一些经验,我将非常感谢大局。如果有人提供详细的步骤,我会处于世界之巅。

1 个答案:

答案 0 :(得分:0)

我正在使用他们的Facebook ID自动注册用户,没有通过,所以他们只有在facebook批准他们并将他们识别为Facebook用户时才能登录。

我正在使用PHP SDK for Facebook。另请记住,您需要签名请求,并且您尝试注册的用户必须在尝试注册之前接受您的APP(以获取他/她的用户ID)。

您可以使用注册插件或在Facebook页面的标签中获取已签名的请求...

这是我的代码,它没有经过全面测试,但它有效,可能会帮助您找到方法。

// Registro automático en Drupal con datos de Facebook
function fbconex_registro() {

global $facebook;
global $user;

$SR = $facebook->getSignedRequest();

if ($SR['registration']) {

    $datos = $SR['registration'];
    $usuario_nuevo['status'] = 1;
    $usuario_nuevo['mail'] = $datos['email'];
    $usuario_nuevo['name'] = 'fb-' . $facebook->getUser();

    // Comprobar que el usuario no existe
    $usuario_nuevo = user_save(null, $usuario_nuevo);

    if (!$usuario_nuevo) {
        $html .= 'Se detectaron problemas. No se pudo registrar.';
    };
} else {
    $html .=
            'Para iniciar sesión o registrarse visite 
  <a href="/concursocial/sesion">mi sesión</a><br/>';

    if ($user->uid != 0)
        drupal_goto('user');
}

if ($usuario_nuevo) {
    $user = $usuario_nuevo;
    drupal_goto('user');
}

return $html;
}