我正在尝试为我的d6网站开发一个自定义模块,让用户注册并登录我的网站,就像普通用户使用现有的drupal登录和注册系统一样。
我查看了fbconnect module(尚未更新以使用最新的facebook php sdk [ver 3]),以及drupal for facebook将Facebook登录信息映射到现有用户ID(如果是drupal用户)存在相同的电子邮件 - 这不是我要找的。
我想做什么:
我无法可视化模块结构。 我怎么做到这一点?我知道我需要使用here提到的服务器端身份验证。
我非常精通创建Drupal模块,只是很难想到这个架构。如果有人对此有一些经验,我将非常感谢大局。如果有人提供详细的步骤,我会处于世界之巅。
答案 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;
}