简介
一款typecho的登陆注册插件 支持第三方登陆
目前支持QQ 微博 百度 钉钉 钉钉V2版本 Gitee码云 Github 华为 Gitlab 阿里云 支付宝 小米 开源中国 领英 微信 企业微信 飞书 微软 coding Google
展示
演示地址
https://blog.gumengya.com/user/login
插件下载
使用方法
下载之后把插件丢到 plugins
目录 目录名改成 GmLogin
下面代码可以输入登陆注册以及找回密码链接
<?php GmLogin_Plugin::url('login'); //输出登陆url ?>
<?php GmLogin_Plugin::url('register'); //输出注册url ?>
<?php GmLogin_Plugin::url('forget'); //输出找回密码url ?>
<?php GmLogin_Plugin::oauth(); //单独输出快捷登录按钮 ?>
支持第三方登陆
- 钉钉
- 百度
- gitee码云
- github
- 微博
- 华为
- Gitlab
- 阿里云
- 支付宝
- 小米
- 开源中国
- 领英
- 微信
- 企业微信
- 微软
- 飞书
- 钉钉V2
- CODING
会陆续新增其他站点的支持
版本
v1.2
- 修复已知BUG
- 修复不存在用户登录时注册失败问题
- 新增coding登录
- 新增Google登录
- 修复原版本接口失效问题(原来版本已经无法使用)
v1.1.2
- 修复图片可能不存在报错问题
- 新增CODING登录
- 修复首次快捷登录绑定账号判断问题
v1.1.1
- 快捷登录完善信息
- 快捷登录绑定已有账号
- 快捷登录注册并绑定新账号
- 新增钉钉官方V2.0登录
- 修改快捷登录失败提示信息页面
v1.1
- 修复来源链接获取失败跳转到首页bug
- 把集成登录写到一个插件 无需typecho_Oauth插件即可开启第三方登录
- 新增设置logo选项
- 新增设置icon图标选项
- 修改电脑版使用弹窗打开授权页面
v1.0
- 新增注册
- 新增登陆
- 新增找回密码
- 新增支持极验
- 新增第三方登陆
70 comments
下面代码可以输入登陆注册以及找回密码链接
这段不会操作哦ヾ(≧∇≦*)ゝ
开启 pjax 会造成第三方图标一直处于加载中的状态,怎么修复呢
![实例]https://t.gmit.vip/u/2023/01/08/iybgio.png)
GetOauthIcon();
加个回调函数到pjax中
我把pjax关了 也还是加载不出来
加了回调也不行的
这得看debug 看浏览器有没有去请求接口
我重新安装了typecho,用的默认主题 很干净的typecho 没有其他主题,也还是不加载出来,控制台没有报错,连cdn都没加
你能直接链接来看看么
dom.djy520.love
在后台的登录页面加上 <?php GmLogin_Plugin::footer(); //非主题js调用 ?> 输出一下js代码 就可以了
主题上才能调用这个方法 非主题调用 比如系统原生的登录界面调用需要加js代码
<script> function GetOauthUrl(site){ let xhr = new XMLHttpRequest(); xhr.open('post', '{$api}'); xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded') xhr.onreadystatechange = function () { if (xhr.readyState === 4) { let res = JSON.parse(xhr.responseText); if(res.code == 1){ let height = res.height; let width = res.width; let url = res.url; let iTop = (window.screen.availHeight - 30 - height) / 2; let iLeft = (window.screen.availWidth - 10 - width) / 2; let open = window.open(url, '_blank', 'height=' + height + ',innerHeight=' + height + ',width=' + width + ',innerWidth=' + width + ',top=' + iTop + ',left=' + iLeft + ',status=no,toolbar=no,menubar=no,location=no,resizable=no,scrollbars=0,titlebar=no'); if(!open){ window.location.href = url; } }else{ } } } let from = encodeURIComponent(window.location.href); xhr.send('action=url&site='+site+'&from='+from); } function GetOauthIcon(){ let obj = '#OauthIcon'; if(window.OauthIconData){ let ico = window.OauthIconData; let html = ''; for(let i = 0; i < ico.length; i++){ html += '<a onclick="GetOauthUrl(\''+ico[i].site+'\')" class="btn btn-rounded btn-sm btn-icon btn-default" data-toggle="tooltip" data-placement="bottom" data-original-title="'+ico[i].name+'账号登陆">'+ico[i].ico+'</a>'; } document.querySelectorAll(obj).forEach(e => { e.innerHTML = html; }); console.log('第三方登录按钮加载完成'); return; } let xhr = new XMLHttpRequest(); xhr.open('post', '{$api}'); xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded') xhr.onreadystatechange = function () { if (xhr.readyState === 4) { let res = JSON.parse(xhr.responseText); if(res.code == 1){ window.OauthIconData = res.data; let html = ''; for(let i = 0; i < res.data.length; i++){ html += '<a onclick="GetOauthUrl(\''+res.data[i].site+'\')" class="btn btn-rounded btn-sm btn-icon btn-default" data-toggle="tooltip" data-placement="bottom" data-original-title="'+res.data[i].name+'账号登陆">'+res.data[i].ico+'</a>'; } document.querySelectorAll(obj).forEach(e => { e.innerHTML = html; }); console.log('第三方登录按钮加载完成'); }else{ console.log('第三方登录按钮加载失败'); } } } let from = encodeURIComponent(window.location.href); xhr.send('action=icon'); }GetOauthIcon(); </script>这个代码直接加无效的 接口地址获取不到的
<?php GmLogin_Plugin::footer(); //非主题js调用 ?>
<?php GmLogin_Plugin::footer(); //非主题js调用 ?> 用这个可以了 谢谢, 直接加js还有跨域问题
真不错
我在gitee仓库中提交了一个Issues,我打开登录界面会报错,具体信息在Issues当中
已经在Issues回复了
插件会和阿里云<svg图标>图标css冲突,Gmlogin - plugin.php里边
把里面样式删了即可
小问题
邮件一直发不过去,qq换到网易再换到微软邮箱了都,一直提示服务器繁忙
开typecho debug f12看发送的请求 报的什么错误
插件启用失败
不知道为什么,显示一大串代码
HTTP/1.1 1064 unknow
Server: kangle/3.5
Date: Thu, 21 Jul 2022 09:51:34 GMT
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate
Pragma: no-cache
Content-Type: text/html; charset=UTF-8
X-Cache: MISS from kangle web server
Transfer-Encoding: chunked
4f0
<head> <meta charset="UTF-8"> <title>1064</title> <style> html { padding: 50px 10px; font-size: 16px; line-height: 1.4; color: #666; background: #F6F6F3; -webkit-text-size-adjust: 100%; -ms-text-size-adjust: 100%; } html, input { font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; } body { max-width: 500px; _width: 500px; padding: 30px 20px; margin: 0 auto; background: #FFF; } ul { padding: 0 0 0 40px; } .container { max-width: 380px; _width: 380px; margin: 0 auto; } </style> </head> <body> <div class="container"> 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 'ALTER TABLE `typecho_gm_oauth` CHANGE `id` `id` INT(100) NOT NULL AUTO_INCREMENT' at line 8 </div> </body><!DOCTYPE html>
0
可以换个mysql试试
这个怎么换mysql?
很明显数据库创建失败了
控制台下面多了一堆的“快捷登录绑定”
还有就是这个多出来的设置选项怎么删除?
这也要问、?
插件没设置功能?
不是啊,插件没发启用,在控制台留下了一堆残骸
你的mysql版本有问题 换成57不就行了
那这些“快捷登录绑定”怎么删?
要么安装成功后卸载 要么自己去数据库中找那些数据 删掉 百度有教程
可以了,原来是php版本太高了,但是我用您的这个插件怎样才可以集成邀请码功能呢?
我这插件没写邀请 用不上
这些数据是存放在哪里呢?
OK
已拿走感谢博主
反馈一个BUG: 当所有第三方登录方式都为打开会显示更多按钮和按钮展开后的PHP报错内容
报错内容截屏一下
那个我用的时候修复了 ,if语句提前一个DIV元素就好了
说错了咳咳,第三方登录都不打开的情况下
那没问题 正常人不会开了第三方登录 不开登录方式 我没想到这种情况
哈哈,面前这位大佬的接口属实好用
可以用 我没添加显示按钮 可以用 很奈斯
可以自己自定义哦 像博客中直接输出快捷登录方式图标下个版本会加上去 目前只有我这个版本有 新版还没推送
没有用呀 按照方法来的
只能输出登录的 url地址的 可以自己写按钮引导用户过去登录