我正在尝试为我的 d6 站点开发一个自定义模块,该模块允许用户注册和登录到我的站点,就像普通用户使用现有的 drupal 登录和注册系统一样。
我看了fbconnect module (尚未更新为使用最新的 facebook php sdk [版本 3])和 drupal for facebook如果存在具有相同电子邮件的drupal用户,它将facebook登录映射到现有用户ID - 这不是我想要的。
我要做什么:
我无法可视化模块结构。
我将如何实现这一目标?我知道我需要使用提到的服务器端身份验证here .
我精通创建 Drupal 模块,只是在思考它的架构时遇到了麻烦。如果有人对此有一些经验,我将不胜感激。如果有人提供详细的步骤,我会站在世界之巅。
最佳答案
我使用他们的 Facebook ID 自动注册用户,没有通过,所以他们只有在 facebook 批准他们并将他们识别为 Facebook 用户时才能登录。
我正在为 Facebook 使用 PHP SDK。还请记住,您需要一个签名的请求,并且您尝试注册的用户必须在尝试注册之前接受您的 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;
}
关于facebook - 用 facebook 登录替换 drupal 注册和登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8405438/