插件作者的标准出来了!Manyou诚邀开发者加盟!
《站长》&《程序员》杂志火热征集开发者
立即免费下载 Discuz!6.1.0正式版
Discuz! 6.1.0 使用说明
Discuz!NT2.5正式版发布
开放源码下载
UCenter Home 1.2 正式版发布
官方站 | 帮助文档
基于ECShop的网店托管-卖否
PHP就业培训直通车 | LAMP培训大连
Discuz!收费服务内容及价格
论坛免费升级 手握手
Discuz!/ECShop 专用官方虚拟主机
【九城-奇迹世界】专题活动开始了!
Comsenz 招聘信息
网店系统ECShop v2.6.0正式版火热发布
基于Discuz!的免费论坛空间5D6D
参与有奖社区调查 赢取台湾5日游
发新话题
打印

[插件] OpenID插件──OpenID4Discuz-2.2.1发布(新用户不再需要注册账号)

OpenID插件──OpenID4Discuz-2.2.1发布(新用户不再需要注册账号)

2.2.1(2008-01-19)
* Bug修正:修正当OP返回的Nickname是空的时候,产生的用户名是纯数字的问题。
   修正后当OP返回的Nickname是空值时,就从OpenID Identifier中抓取用户昵称。
   目前支持的OP有:       
   xxx.openid.org.cn
   xxx.myopenid.com
   xxx.openid.cn
   xxx.openid.35.com
   xxx.openid.org
   xxx.mysecond.name
   xxx.pip.verisignlabs.com
   www.ican.com.cn/xxx

2.2.0(2008-01-13)
* 新增特性:允许论坛管理员配置使用自动注册(推荐)或是用户选择绑定的方式来处理新OpenID登录的情况。

2.1.0(2008-01-13)
* 新增特性:当用户使用一个尚未和任何论坛账号绑定时,允许用户选择和已有账号绑定或是注册一个新账号来绑定。

2.0.0(2008-01-05)
* 首页增加了OpenID登录框;
* 如果未登录就点击发贴或回帖出现的登录框也增加了OpenID登录选择;
* 更换了OpenID类库,这个类库可以支持https的openid identifier,也支持OpenID Authentication 2.0了,
   而且对PHP module `curl‘的依赖也不是必需的了;
* 之所以版本号从1.0.0跨越到2.0.0是因为一来改变了OpenID类库,二来增加了对OpenID 2.0的支持。

1.0.0(2007-12-14)
* 完善用户绑定和登录功能。

0.1.0(2007-11-20)
* 完成用户绑定和登录功能。

如何从2.2.0升级到2.2.1,上传php文件覆盖一下即可

如果要从旧版本升级到2.2.0过来的话,直接上传文件覆盖,并再次执行openid_install.php(因为新增了一个表),并且需要在后台重新导入一次discuz_plugin_openid4discuz.txt(因为新增了管理员配置)。

OpenID for Discuz!
该插件让你的Discuz!论坛能使用OpenID登录。
让用户更容易登入论坛,让你的论坛更方便、更人性、更容易吸引新用户。

特性

    * 允许论坛已有帐号与OpenID Identifier建立一对一绑定,绑定后用户既可用用户名、UID方式登录,也可用已绑定的OpenID Identifier登录;
    * 允许用户修改或者解除帐号和OpenID Identifier之间的绑定;
    * 用户使用OpenID Identifier登录时,如果该OpenID Identifier没有绑定任何论坛帐号,可以选择两种方案(由论坛管理员配置):
          o 自动为用户选择一个Username注册并绑定(推荐),选择的Username为从OP(OpenID Provider)取得的昵称,如果该Username已存在,则在末尾增加递增数字
          o 让用户自己选择(有二个选择:绑定已有账号、注册新账号绑定)。
    * 用Cookie保存用户选择的登录标识类型(用户名、UID或OpenID Identifier),方便下次登录;
    * 用Cookie保存用户输入的 OpenID Identifier,方便下次登录;
    * 支持OpenID 2.0认证。

兼容版本

    * 支持Discuz! 6.0.0 GBK/UTF-8版;
    * 其它版本可能也支持,但未经过测试。

安装

   1. 备份你的论坛的下列文件(括号中的注释是为什么OpenID4Discuz要修改这些文件):
         1. logging.php(增加了OpenID登录控制逻辑)
         2. register.php(插入了OpenID辅助注册逻辑)
         3. templates/default/discuz.htm(增加了论坛首页的OpenID登录框)
         4. templates/default/login.htm(增加了登录页的OpenID登录输入框)
         5. templates/default/nopermission.htm(未登录点击发帖时,要求登录出现的登录界面上增加了OpenID登录框)
         6. templates/default/register.htm(插入了OpenID辅助注册时默认填写的论坛账号)
   2. 上传下列文件或目录(以斜线结尾的是目录)。如果提示覆盖同名文件的话,就覆盖,因为上一步我们已经备份了将要被覆盖的文件了:
         1. logging.php
         2. register.php
         3. openid.php
         4. openid_install.php
         5. plugins/openid/
         6. templates/default/
   3. 用管理员登录,在论坛的后台的“插件管理”里面导入:discuz_plugin_openid4discuz.txt;
   4. 通过openid_install.php添加三个表(表名是“论坛表前缀_openid”,“论坛表前缀_openid_sessions”,“论坛表前缀_openid_username_cache”)到你的论坛数据库(如果同名表已存在,openid_install.php 脚本则不对数据库做任何修改)。

卸载

   1. 删除下列文件或目录(以斜线结尾的是目录):
         1. openid.php
         2. openid_install.php
         3. plugins/openid/
         4. templates/default/openid*(注意没有前缀openid的是原discuz的文件不要删除)
   2. 从备份中还原你的论坛的原始文件(文件列表参见安装过程);
   3. 用管理员登录,在论坛的后台的“插件管理”里面删除唯一标识符为“openid4discuz”的插件;
   4. 删除三个表(表名是“论坛表前缀_openid”,“论坛表前缀_openid_sessions”,“论坛表前缀 _openid_username_cache”)。注意强烈建议不要删除表“论坛表前缀_openid”,因为里面存了用户帐号和 OpenID 间的映射;表“论坛表前缀_openid_sessions”和“论坛表前缀_openid_username_cache”删掉无所谓。

授权

    * OpenID4Discuz采用New BSD License授权,详见下载包中的LICENSE.txt。


关于压缩包

由于http://discuz.net不能上传扩展名为.tar.gz的包,并且如果我压缩成.zip包的话,又超过了我能上传文件的上限512KB,因此我先采用了高压缩率的.tar.gz,然后在打包成zip。请见谅。

[ 本帖最后由 sutrazhou 于 2008-1-19 14:10 编辑 ]

附件

openid4discuz-1.0.0-2007-12-14-UTF-8+GBK.zip (54.54 KB)

2007-12-18 10:25, 下载次数: 165

openid4discuz-2.0.0-alpha-2007-12-24-GBK.zip (438.7 KB)

2007-12-24 23:14, 下载次数: 2272

openid4discuz-2.0.0-alpha-2007-12-24-UTF-8.zip (438.65 KB)

2007-12-24 23:14, 下载次数: 106

openid4discuz-2.0.0-2008-01-05-GBK.zip (438.38 KB)

2008-1-5 00:45, 下载次数: 97

openid4discuz-2.0.0-2008-01-05-UTF-8.zip (431.84 KB)

2008-1-5 00:45, 下载次数: 111

openid4discuz-2.2.0-2008-01-13-GBK.zip (435.47 KB)

2008-1-13 07:44, 下载次数: 491

openid4discuz-2.2.0-2008-01-13-UTF-8.zip (441.73 KB)

2008-1-13 07:44, 下载次数: 94

openid4discuz-2.2.1-2008-01-19-GBK.zip (442.64 KB)

2008-1-19 14:10, 下载次数: 171

openid4discuz-2.2.1-2008-01-19-UTF-8.zip (442.72 KB)

2008-1-19 14:10, 下载次数: 119

本帖最近评分记录
  • lu5266 威望 +10 真不错呢 2007-12-25 02:08
  • lu5266 金币 +10 真不错呢 2007-12-25 02:08
  • 僭燮水 威望 +10 不加分没天理了 2007-12-24 23:58
  • 僭燮水 金币 +10 不加分没天理了 2007-12-24 23:58
最好是没有注册的可以用openid直接登录
这是终极目标
在这里发布了,希望大家喜欢:下载见主题贴。

[ 本帖最后由 sutrazhou 于 2007-11-25 16:02 编辑 ]
Visual'R 时尚 主流 领秀  http://www.visualr.cn
为什么不发上来?

login.htm需要覆盖?怕怕~
请给出修改方法。
氵干~

Discuz! info: MySQL Query Error

Script: /openid_install.php

SQL: CREATE TABLE IF NOT EXISTS `[Table]openid` (`uid` mediumint(8) unsigned NOT NULL,`openid_url` char(255) NOT NULL,PRIMARY KEY (`openid_url`),UNIQUE KEY `uid` (`uid`)) ENGINE=MyISAM DEFAULT CHARSET=utf8;
Error: You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'DEFAULT CHARSET=utf8' at line 1
Errno.: 1064

回复 5# 的帖子

嗯,这个文件的修改回头我可以把差异附上。
在这个模板文件里其实就增加了一个切换输入框的radio button和一个输入OpenID的text框框。

[ 本帖最后由 sutrazhou 于 2007-11-20 09:50 编辑 ]

回复 6# 的帖子

这个错误,我回去看看,呵呵。能问下,你的MySQL是什么版本的?可能我写得太高了。
刚刚更新了一下安装sql,应该好了。
下载见主题贴。

应 GoSuRF 的要求下面的diff是修改的 login.htm 页面的模板(就增加了一个切换输入框的radio box和一个用来输入 OpenID URL 的 text box)。
复制内容到剪贴板
代码:
--- /home/sutra/Desktop/t/upload/templates/default/login.htm        2007-09-07 17:06:40.000000000 +0800
+++ /home/sutra/workspace/openid4discuz/templates/default/login.htm        2007-11-18 05:22:56.000000000 +0800
@@ -1,5 +1,23 @@
{template header}

<div id="nav"><a href="$indexname">$bbname</a> &#187; {lang member_login}</div>

+
+<script type="text/javascript">
+function setOpenIdLogin(isOpenIdLogin) {
+        document.getElementById("username").style.display = (isOpenIdLogin ? "none" : "inline");
+        document.getElementById("openid_url").style.display = (isOpenIdLogin ? "inline" : "none");
+        document.getElementById("password").disabled = isOpenIdLogin;
+        document.getElementById("password").style.backgroundColor = isOpenIdLogin ? '#eee' : '';
+        document.getElementById("questionid").disabled = isOpenIdLogin;
+        document.getElementById("answer").disabled = isOpenIdLogin;
+        document.getElementById("answer").style.backgroundColor = isOpenIdLogin ? '#eee' : '';
+        
+        if (isOpenIdLogin) {
+                document.getElementById("openid_url").focus();
+        } else {
+                document.getElementById("username").focus();
+        }
+}
+</script>


<form method="post" name="login" action="logging.php?action=login&">

<input type="hidden" name="formhash" value="{FORMHASH}" />

@@ -22,11 +40,14 @@
                 <!--{/if}-->

                 <tr>

                         <th onclick="document.login.username.focus();">

-                                <label><input class="radio" type="radio" name="loginfield" value="username" tabindex="2" checked="checked" />{lang username}</label>

-                                <label><input class="radio" type="radio" name="loginfield" value="uid" tabindex="3" />{lang uid}</label>

+                                <label><input class="radio" type="radio" name="loginfield" value="username" tabindex="2" checked="checked" onchange="setOpenIdLogin(false)" />{lang username}</label>

+                                <label><input class="radio" type="radio" name="loginfield" value="uid" tabindex="3" onchange="setOpenIdLogin(false)" />{lang uid}</label>
+                                <label><input class="radio" type="radio" name="loginfield" value="openid" tabindex="3" onchange="setOpenIdLogin(true)" id="loginfield_openid" />OpenID</label>

                         </th>

                         <td>

-                                <input type="text" id="username" name="username" size="25" maxlength="40" tabindex="4" />

+                                <input type="text" id="username" name="username" size="25" maxlength="40" tabindex="4" />
+                                <input type="text" id="openid_url" name="openid_url" size="25" tabindex="4"
+                                        style="display:none; background: url(http://www.openid.net/login-bg.gif) no-repeat; background-position: 0 50%; padding-left: 18px;" />
                                 <a href="$regname">{lang register_now}</a>

                         </td>

                 </tr>

@@ -93,8 +114,13 @@
</div>

</form>



-<script type="text/javascript">

-document.login.username.focus();

+<script type="text/javascript">
+setOpenIdLogin(document.getElementById("loginfield_openid").checked);
+if (document.getElementById("loginfield_openid").checked) {
+        document.login.openid_url.focus();
+} else {

+        document.login.username.focus();
+}


var mydate = new Date();

var mytimestamp = parseInt(mydate.valueOf() / 1000);
[ 本帖最后由 sutrazhou 于 2007-11-25 16:03 编辑 ]
论坛程序版本 Discuz! 6.0.0 Release 20070904
操作系统及 PHP WINNT / PHP v4.4.4
MySQL 版本 4.0.25-nt

谢谢修正,有时间再测试下~
发新话题
版块跳转