首页 文章

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

提问于
浏览
4

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

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

What I am looking to do:

  • 用户来到我的网站 . 点击登录facebook .

  • 他显示了fb登录弹出窗口 . 用户授予权限 .

  • 此时我将他注册到该网站,并将他登录 .

  • 他现在可以访问为经过身份验证的用户设置的所有权限,以创建帖子等 .

  • 他退出了 . 再次回来并登录,这次他第一次创建的所有内容都可供他使用,就像经常认证的用户一样 .

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

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

1 回答

  • 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>
    '; if ($user->uid != 0) drupal_goto('user'); } if ($usuario_nuevo) { $user = $usuario_nuevo; drupal_goto('user'); } return $html; }

相关问题