【Demo】QQ,github,微博第三方社交登录

本文主要讲解 集成 第三方社交账号登录

为什么会有这个需求?

主要是因为目前互联网的网站数量太多,如果在各个站点都注册一个账号 用户非常不容易记住每个账号的用户名和密码,并且非常难保证每个账号的密码足够安全

而目前流行的社交网站 基本上每个用户都有账号,如果通过这类社交网站登录 就能得到如下几点好处

  • 用户不用再注册其他账号

  • 用户只能维护社交账户足够安全就行了,使用此社交账号登录的就是安全的了

常见的第三方社交账号有哪些?

  • QQ

  • 微信

  • 新浪微博

  • 人人网

  • 百度

  • Github

如何加入第三方登录功能?

国内这些比较大的社交公司 都有专门的开放平台,有经验的开发者可以看开放平台是可以实现了,本人主要实现三个社交登录

  • 新浪微博登录

  • QQ登录

  • Github登录

申请新浪微博网页应用

进入 http://open.weibo.com/  申请网页应用,微博应用可以先申请等上线之后再提交审核


600


600


600


600


600

申请QQ登录应用

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





申请Github登录应用

进入https://github.com/  登录之后 进入 设置页面


600


600


600


600


实现 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 ,感兴趣大家可以自行前往试试


600



600


集成到商业产品需优化的地方

获取用户信息的相关逻辑,放入队列处理,因为获取信息还是比较慢的



原文地址: 【Demo】QQ,github,微博第三方社交登录
标签: qq    微信    微博    oauth    第三方    登录   

智能推荐

要将 GitHub 第三方登录接入到你的应用程序中,你可以按照以下步骤进行操作: 1. 创建一个 GitHub 开发者帐户:在 GitHub 上创建一个帐户(如果你还没有)。然后登录到你的帐户并导航到开发者设置页面。 2. 创建一个新的 OAuth 应用程序:在开发者设置页面中,点击 "New OAuth App" 按钮创建一个新的应用程序。填写应用程序的名称、主页 URL(可以是你的应用程序网站)、回调 URL(GitHub 会将用户重定向到此 URL),并选择适当的权限范围。 3. 获取应用程序的客户端 ID 和客户端密钥:创建应用程序后,你将获得一个客户端 ID 和一个客户端密钥。这些信息将在后续步骤中使用。 4. 在你的应用程序中实现登录功能:根据你所使用的编程语言和框架,找到适当的库或插件来帮助你实现 GitHub 第三方登录功能。不同语言和框架可能有不同的实现方式,你可以参考 GitHub 的官方文档或搜索相关示例代码。 5. 配置登录回调处理:当用户使用 GitHub 登录成功后,GitHub 会将用户重定向到你在步骤 2 中设置的回调 URL。在你的应用程序中,需要处理这个回调请求,并从中提取授权码或访问令牌。使用这些令牌,你可以与 GitHub API 进行交互,获取用户的信息或执行其他操作。 6. 使用 GitHub API:一旦用户成功登录并授权你的应用程序,你可以使用 GitHub API 访问用户的存储库、个人信息等。根据你的需求,调用适当的 API 端点来获取所需的数据。 这些步骤涵盖了一个基本的 GitHub 第三方登录接入流程。具体实现方式可能因你所使用的编程语言和框架而有所不同,但上述步骤应该能够帮助你开始进行接入。记得在实际开发过程中查阅相关文档和示例代码,以确保正确地实现登录功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值