第三方登录

登录

javaweb中如何去维持登录状态

1.登录后 信息放入 session中
2.页面内验证session中是否有登录信息
3.如果有,不需要再次登录
4.如果没有,跳转登录页面
5.如果登录后点击注销,删除session中登录信息,并清除页面缓存(必要的)

javaweb中哪些情况我们的session会过期

1.过期-->很长时间没有去访问网站
2.主动关闭-->用处注销
3.切换浏览器

手机端如何维持登录状态

  • 通过sessionKey/tokenKey

相关疑问

  1. sessionKey/tokenKey哪里来?
    1. 登录成功之后,后台返回.
  2. sessionKey/tokenKey生成有什么规则?
    1. 后台返回的,按照一定规则生成的(比如可以随机数生成一个24位以上的字符串)
  3. 登录成功返回的sessionkey/tokenKey存到哪里?
    1. 保存到sp中就可以了
  4. sessionkey/tokenKey使用场景
    1. 有些协议需要用到登录信息,就需要看登录状态,就需要用到sessionkey/tokenKey,比如支付协议;
  5. 如何使用sessionkey/tokenKey?
    1. 需要登录状态,判断sp中是否有sessionkey/tokenKey?
      1. 有:那当前是已登录状态,就把个人信息和sessionkey/tokenKey上传到服务器;
      2. 没有:跳到登录界面,让用户登录
  6. 谁去判断sessionkey/tokenKey是否过期?

    1. 任何协议把sessionkey/tokenKey传到服务器.服务器会判断sessionkey/tokenKey是否过期?
      1. 过期:告知客户端,登录状态已过期,需要重新登录
      2. 未过期:可以使用当前的登录信息,继续走逻辑;
  7. 为什么判断是否过期需要后台做?

    1. 因为前端可以修改当前时间?
  8. sessionkey/tokenKey多久过期?
    1. 这个具体看公司
  9. 后台如何去判断sessionkey/tokenKey是否过期?–>拓展
    1. 分配sessionkey/tokenKey的时候记录时间
    2. 某一时刻,用户判断sessionkey/tokenKey是否过期的时候,拿着当前时间和sessionkey/tokenKey分配时间做比较
      1. 大于指定时间:过期
      2. 没有大于指定时间:未过期
  10. 为什么需要登录状态的维持?
    1. 安全
    2. 维持登录状态耗资源.

绘流程图说明sessionKey的使用

确认支付协议为例

验证码登录/注册_简单流程

1.提交手机号
2.下发短信验证码
3.提交验证码

验证码登录/注册_流程描述

1.用户填写手机号,点击发送验证码,发送请求把手机号传到server
2.server调用短信平台的接口知道`发送内容`,`发送对象`,完成短信的发送
3.用户收到短信,得到验证码,填写验证码,发送请求把`手机号`,`验证码`上传到server
4.server判断我们的`验证码是否正确`,`验证是否过期`,根据不同的判断,返回不同的结果

sharesdk短信验证sdk

  • 1.注册成为开发者
  • 2.添加应用
  • 3.下载demo
    • SMSSDK–>lib工程
    • SMSSDKSample–>demo
  • 4.运行demo查看效果–>用模拟器会报错
  • 5.集成到自己的应用里面;

什么开发平台

  • 开放平台(Open Platform) 在软件业和网络中,开放平台是指软件系统通过公开其应用程序编程接口(API)或函数(function)来使外部的程序可以增加该软件系统的功能或使用该软件系统的资源,而不需要更改该软件系统的源代码。
  • 开发平台的作用:提供功能,提供资源;

qq登录

  • 网址:http://wiki.connect.qq.com/sdk%E4%B8%8B%E8%BD%BD
  • 集成步骤(移动应用接入流程)

    • 1.注册成为开发者,登录;
    • 2.点击申请加入,创建应用;–>会分配appId,appKey
      • APP ID:1104072093
      • APP KEY:PzMWIM4GYZvxGRjd
    • 3.完善信息;
    • 4.下载demo.运行看效果;
    • 5.集成开发;
      • webview方式(老方式):授权的时候是跳到了一个webview上去授权
      • sso方式:如果手机里面装了qq.那就是单点登录的形式.如果没有装qq,就是跳到webview这种老方式;
      • sso:单点登录
  • 集成步骤_官方

    • 1.注册成为开发者
    • 2.创建应用
    • 3.完善应用信息
    • 4.提交上线申请
    • 5.通过审核上线

第三方登录

  • 用qq号/微信号/微博号去登录自己的应用
  • 核心:就是拿到我们accessToken
  • 实际开发第三方登录的协议:http://xxx?token=>xxx&type=x,token就是我们授权之后返回的accessToken,type是为了区分不同登录渠道;

accessToken是啥,干嘛用?

  • 形象解释:申请调兵–>皇帝同意–>兵符–>开始调兵
  • 拿到用户在第三方平台的唯一的标识;
  • 获取用户的nickname,头像,邮箱等其他信息;

实际开发3大步(app做的事情,实际开发,我们能把我这里的几个步骤,就可以完成开发工作)

  • 1.发起授权请求,让用户授权
  • 2.处理授权结果.拿到accessToken
  • 3.调用第三方登录协议(自己公司定义),传递accessToken到app的server,后续逻辑交给server

server拿到accessToken做了啥(锦上添花的了解一下)

静默注册新用户或者返回已有用户用户信息

  • 取的用户在第三方平台的唯一的标识(重点);
  • 获取用户的nickname,头像,邮箱等其他信息;
  • 1.后台用户信息表
    • userId nickname headpic otherinfos thirdPlatformUserId type
  • 2.使用accessToken拿到用户在第三方平台的唯一ID(thirdPlatformUserId)
  • 3.根据thirdPlatformUserId+type去查询用户信息表
    • 不存在记录:说明,用户之前没有用此第三方账号登陆过我们系统:
      • 1.调用第三方平台相关的接口,拿到nickname,邮箱,头像
      • 2.静默的注册一个用户,其实就是往用户信息表插入(insert)一条记录
    • 存在记录:说明,此前,用户已经用此第三方账号登陆过我们系统:
      • 返回相关的用户信息

qq登录_sso形式

  • sso(单点登录)方式:如果手机里面装了qq.那就是单点登录的形式.如果没有装qq,就是跳到webview这种老方式;

微博第三方登录

  • 1.注册成为开发者
  • 2.创建应用:微博创建应用流程稍微麻烦一点.需要重点讲一下
    • 需要上传我们keystore的签名信息,使用签名工具获取,和微信支付类似;
    • 授权回调页:随便写一个就可以,但是需要不可以反问
  • 3.运行demo,查看一下.
  • 4.集成微博第三方登录.
    • 1.拷贝jar包,或者关联lib工程
    • 2.查看androidMinfest.xml
    • 3.寻找关键代码

oauth

OAuth是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用。

oauth产生背景 –>画图说明

oauth2.0授权流程_图

实际开发oauth2.0应用

oauth2.0授权流程

(A)用户打开客户端以后,客户端要求用户给予授权。
(B)用户同意给予客户端授权。
(C)客户端使用上一步获得的授权,向认证服务器(比如qq登录,那就是腾讯)申请令牌。
(D)认证服务器对客户端进行认证以后,确认无误,同意发放令牌。
(E)客户端使用令牌,向资源服务器申请获取资源。
(F)资源服务器确认令牌无误,同意向客户端开放资源。

oauth2.0涉及的角色

(1) Third-party application:第三方应用程序,本文中又称"客户端"(client),即上一节例子中的"云冲印"。
(2)HTTP service:HTTP服务提供商,本文中简称"服务提供商",即上一节例子中的Google。
(3)Resource Owner:资源所有者,本文中又称"用户"(user)。
(4)User Agent:用户代理,本文中就是指浏览器。
(5)Authorization server:认证服务器,即服务提供商专门用来处理认证的服务器。
(6)Resource server:资源服务器,即服务提供商存放用户生成的资源的服务器。它与认证服务器,可以是同一台服务器,也可以是不同的服务器。

你可能感兴趣的:(第三方登录)