我正在开发一个Drupal 6模块来提供基于OAuth的用户认证和注册。我已按照http://oauth.net/core/1.0a/#anchor9上的说明使用OAuth模块进行身份验证。下一步是使用服务提供商的自定义API使用验证后提供的信息创建用户帐户。在Drupal中进行外部认证后透明用户注册
根据http://drupal.org/node/497612#comment-3047302,我不应该使用user_external_login_register()
,但请参阅OpenID模块了解如何正确登录外部用户。
研究的OpenID模块后,这里是我打算做:
- 尝试加载现有用户的使用
user_external_load()
定制API结果authname的构建。 - 如果用户存在,则使用
user_external_login()
登录用户。 - 如果没有,假装登记表已经提交(如
openid_authentication()
一样)来创建一个新的用户帐户。如果需要任何附加信息以便用户注册,则将其重定向到预填表单。
这是正确的做法吗?除了OpenID之外,还有其他模块值得关注吗?
谢谢你的提示。但是drupal_distributed_validate使用user_external_login_register(),根据http://drupal.org/node/497612#comment-3047302不应该使用它。我想这是因为它不强制执行额外的注册字段,并重新创建(本地用户,如果现有本地用户的名称与外部用户的名称不匹配) – 2010-06-22 11:42:09
这是在d7中的强化。但D6,尽管不完美。 user_external_login_register()仍然是要走的路。或者,你可以自己重写这样的功能,并在那里强化它。 – berkes 2010-06-22 16:28:37