【Demo】QQ,github,微博第三方社交登录
本文主要讲解 集成 第三方社交账号登录
为什么会有这个需求?
主要是因为目前互联网的网站数量太多,如果在各个站点都注册一个账号 用户非常不容易记住每个账号的用户名和密码,并且非常难保证每个账号的密码足够安全
而目前流行的社交网站 基本上每个用户都有账号,如果通过这类社交网站登录 就能得到如下几点好处
用户不用再注册其他账号
用户只能维护社交账户足够安全就行了,使用此社交账号登录的就是安全的了
常见的第三方社交账号有哪些?
QQ
微信
新浪微博
人人网
百度
Github
如何加入第三方登录功能?
国内这些比较大的社交公司 都有专门的开放平台,有经验的开发者可以看开放平台是可以实现了,本人主要实现三个社交登录
新浪微博登录
QQ登录
Github登录
申请新浪微博网页应用
进入 http://open.weibo.com/ 申请网页应用,微博应用可以先申请等上线之后再提交审核





申请QQ登录应用
进入 https://connect.qq.com/ ,登录之后 进入 应用管理,QQ应用需要先审核通过之后才可以使用(PS: 我被驳回了4次才通过,很多项和备案信息相关的)





申请Github登录应用
进入https://github.com/ 登录之后 进入 设置页面




实现 QQ,微博,Github登录功能
相关数据表
CREATE TABLE `user` (
`uid` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '用户uid',
`nickname` varchar(20) NOT NULL DEFAULT '' COMMENT '用户昵称',
`unique_name` varchar(60) NOT NULL DEFAULT '' COMMENT '唯一标识',
`avatar` varchar(500) NOT NULL DEFAULT '' COMMENT '用户头像',
`mobile` varchar(11) NOT NULL DEFAULT '' COMMENT '用户手机号码',
`updated_time` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '最后一次更新时间',
`created_time` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '插入时间',
PRIMARY KEY (`uid`),
UNIQUE KEY `idx_name` (`unique_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户表'; CREATE TABLE `oauth_token` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`client_type` varchar(20) NOT NULL DEFAULT '' COMMENT '客户端来源类型',
`token` varchar(100) NOT NULL DEFAULT '',
`note` varchar(1000) NOT NULL DEFAULT '' COMMENT '备注',
`valid_to` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '有效期截止日期',
`updated_time` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '最后一次更新时间',
`createdt_time` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '插入时间',
PRIMARY KEY (`id`),
KEY `client_type_token` (`client_type`,`token`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='oauth token 表'; CREATE TABLE `oauth_bind` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`uid` int(11) NOT NULL DEFAULT '0' COMMENT '用户uid',
`client_type` varchar(20) NOT NULL DEFAULT '' COMMENT '客户端',
`openid` varchar(80) NOT NULL DEFAULT '' COMMENT '第三方id',
`extra` text NOT NULL COMMENT '额外字段',
`created_time` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '插入时间',
PRIMARY KEY (`id`),
KEY `idx_client_type_opend_id` (`client_type`,`openid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='第三方登录绑定关系';
实现架构
相关代码文件:https://github.com/apanly/dream/tree/master/common/service/oauth
ClientService.php 统一第三方登录方法,应用程序的方法入口
GithubService.php Github第三方登录相关方法
QqService.php QQ第三方登录相关方法
WeiboService.php 微博第三方登录相关方法
实例演示
地址: http://www.54php.cn/oauth/login ,感兴趣大家可以自行前往试试


集成到商业产品需优化的地方
获取用户信息的相关逻辑,放入队列处理,因为获取信息还是比较慢的
原文地址:【Demo】QQ,github,微博第三方社交登录
标签:qq 微信 微博 oauth 第三方 登录
智能推荐
【Demo】QQ,github,微博第三方社交登录的更多相关文章
- Android应用之——微信微博第三方sdk登录分享使用过程中的一些常见问题
前言 近期在使用第三方登录和分享的过程中遇到了非常多问题,一方面能够归结为自己经验的不足,还有一方面事实上也说明了官方文档的含糊不清.这篇博文不会写关于怎样使用第三方登录分享,由于官方文档已经写明了步 ...
- qq 微信 微博 第三方分享
<html> <head> <meta charset="utf-8"> <meta name="viewport" ...
- 微博第三方js-sdk登录
https://open.weibo.com <meta property="wb:webmaster" content="your appkey" /& ...
- 使用OAuth2.0协议的github、QQ、weibo第三方登录接入总结
目录 第三方接入总结 OAuth2.0介绍 github OAuth2.0登录接入 国内第三方应用商SDK使用 微博SDK 腾讯QQ SDK passport.js插件使用 安装 相关中间件.路由 返 ...
- Python 第三方登录 实现QQ 微信 微博 登录
本人写的AgentLogin,能快速返回QQ.微信.微博第三方用户名信息,主要用于快速登录 用 pip命令安装 pip install AgentLogin 用法 : 导入这个包 from Agent ...
- 基于Swift语言开发微信、QQ和微博的SSO授权登录代码分析
前言 Swift 语言,怎么说呢,有一种先接受后排斥.又欢迎的感觉,纵观国外大牛开源框架或项目演示,Swift差点儿占领了多半,而国内尽管出现非常多相关技术介绍和教程,可是在真正项目开发中使用的占领非 ...
- Python - social-auth-app-django 模块 - 商城项目 第三方方式登录 - 微博
开发准备 开通微博开发者权限 点击这里 进入 微博开放平台 开通后权限后创建应用 创建网页应用, 此处不需要进行审核即可使用测试环境 开发环境信息 此处一些信息是很重要的东西, 比如 App_key ...
- Yii2 使用 QQ 和 Weibo 第三方登录源码
我们社区在 yii2-authclient 多次升级后,登录异常.一直想寻求一种通用的方法,尽量不重写 OAuth2, BaseOAuth 以及 OAuthToken 类, 所以本次直接在 initU ...
- django项目微博第三方登录
此处咱们用到的是 social_django,所以要把此应用注册到配置文件中, INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.a ...
随机推荐
- [教程] 【玩转终端1:apt-get】
进来工作比较清闲,所以写点东西,给喜欢折腾的朋友.本文及后面将要介绍的一些终端命令,其实对于玩过linux的人来说,是很基础的东西,我可能是班门弄斧了(拍砖的请轻点,有愿意补充/纠正的,本人求知不得) ...
- Linux下hostname与hosts
参考:http://wp.fungo.me/linux/what-the-hell-is-hostname.html hostname 就是机器名,内核中的一个变量,可临时修改也可以永久修改 /etc ...
- Qt:postEvent 与 customEvent() 函数 进行异步通信; 以及参数的传递 // 防止界面卡死;;
class ColorChangeEvent : public QCustomEvent { public: ColorChangeEvent( QColor color ) : QCustomEve ...
- C#与Java多态方面的语法差异
C++.C#.Java,无奈三种语言让我多次混淆,多次搞清楚,不写个Demo我想还是会忘记的. 就好像是一个满水的杯子,倒掉一点,才能装下更多. 有时候博客就是一个倒水的地方,可以让我们清空自己,然后 ...
- C Primer Plus_第10章_数组和指针_编程练习
1. /*rain.c 针对若干年的降水量数据,计算年降水总量.年降水平均量,以及月降水平均量*/ #include <stdio.h> #define MONTHS 12 #define ...
- c/c++优化结构控制
一.表达式优化--使用替换程序中的乘除法 c/c++中的加减运算效率远远高于乘除运算,由于移位指令的执行速度和乘除法差不多,所以可以使用移位的方式来替换程序中的乘除法.一个数向右移一位,等于该数乘以2 ...
- 【Java EE 学习 24 上】【注解详解】
一.注解 1.所有的注解都是类. 2.所有的注解都是Annotation接口的子类. 接口摘要 Annotation 所有 annotation 类型都要扩展的公共接口. 3.定义方式 public ...
- Java和C#下的参数验证
参数的输入和验证问题是开发时经常遇到的,一般的验证方法如下: public bool Register(string name, int age) { if (string.IsNullOrEmpty ...
- vue
vue.js 插件 setting--> plugins 搜索vue,下载安装如果想要高亮显示*.vue文件,可以在File Types 选项里找到HTML,然后在下方手动添加*.vue,这样就 ...
- 使用Flexible实现手淘H5页面的终端适配
拿到设计师给的设计图之后,剩下的事情是前端开发人员的事了.而手淘经过多年的摸索和实战,总结了一套移动端适配的方案--flexible方案. 这种方案具体在实际开发中如何使用,暂时先卖个关子,在继续详细 ...