Android第三方登陆

摘要:
客户端使用在上一步骤中获得的授权向认证服务器申请令牌。身份验证服务器对客户端进行身份验证后,确认没有错误并同意颁发令牌。oauth 2.0(第三方应用程序)中涉及的角色在本文中也称为“客户端”,即上一节示例中的“云打印”。ResourceOwner:资源所有者,本文中也称为“用户”。UserAgent:用户代理。在本文中,它指的是浏览器。Authorizationserver:身份验证服务器,即服务提供商用来处理身份验证的服务器。它可以是相同的服务器,也可以不同于身份验证服务器。
登录

javaweb中如何去维持登录状态

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

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

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

手机端如何维持登录状态

  • 登录成功之后,在成功的结果里面会附加一个sessionKey/tokenKey的字段;

登录成功之后,返回的sessionKey/tokenKey的作用

1.登录登录.需要保存sessionKey到sp-->保存sessionkey
2.判断sessionKey是否存在sp中,存在,服务器判断是否过期,过期,要求用户重新登录;
3.判断sessionKey是否存在sp中,存在,服务器判断是否过期,不过期,继续走流程;
4.判断sessionKey是否存在sp中,不存在,要求用户登录,登录完成保存sessionkey;

验证码登录/注册

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

sharesdk短信验证sdk

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

Android第三方登陆第2张

开发平台

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

Android第三方登陆第3张

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:单点登录

Android第三方登陆第4张

第三方登录

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

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

* 1.发起授权请求,让用户授权 ok
* 2.用户输入账号密码,用户授权成功 ok
* 3.处理授权结果.拿到accessToken ok
* 4.调用第三方登录协议(自己公司定义的).完成第三方登录 自己server定义的协议和腾讯没有关系  

server步骤(锦上添花的了解一下)

* 使用accessToken拿到用户在`第三方平台的唯一ID`;
    * 判断`第三方平台的唯一ID`是否存在我们的用户信息表中;
        * 存在:(之前使用qq号登陆过自己的系统)返回当前用户的用户信息
        * 不存在:(用户还没有使用过此qq登陆过我们的系统)
* 调用相关的接口,拿到nickname,邮箱,头像(需要什么拿取什么);

accessToken传递到后台,后台的处理逻辑

Android第三方登陆第5张

accessToken是啥,干嘛用?

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

微博第三方登录

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

oauth

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

oauth产生背景 -->举例

oauth2.0授权流程

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

Android第三方登陆第6张

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:资源服务器,即服务提供商存放用户生成的资源的服务器。它与认证服务器,可以是同一台服务器,也可以是不同的服务器。

新浪微盘开发平台

  • 1.创建应用-->分配appId,appSecret
  • 2.运行demo
  • 3.整体感知

 

通过新浪微盘授权再看oauth2.0

第一步:让用户授权
https://login.sina.com.cn/sso/logout.php?r=https%3A%2F%2Fauth.sina.com.cn%2Foauth2%2Fauthorize%3Fclient_id%3D3237555059%26redirect_uri%3Dhttp%253A%252F%252Fwww.itheima.com%26response_type%3Dcode%26display%3Dmobile&rand=1432687399
第二步:获取code
请求url地址: https://auth.sina.com.cn/oauth2/authorize
请求方法是post:
请求参数:
client_id=3237555059&client_secret=2b6c964b071e2ecc28c1835628cc6901&grant_type=authorization_code&code=a9ad7e219c0c8d209ed4b4be48d3af82&redirect_uri=http%3A%2F%2Fwww.itheima.com
结果:重定向到回调地址传入我们的code
第三步:获取我们的accessToken
https://auth.sina.com.cn/oauth2/access_token

{ “client_id”, appkey, “client_secret”,appSecrect, “grant_type”, “authorization_code”, “code”, code, “redirect_uri”, “回调地址” };
结果:拿到accessToken/token


c00cc566623yk3e3x6rXZ3gOj5Jc5a62
05-27 00:54:33.252: I/System.out(1312): token: b682c066623yk3e2xJtU24kftMdc09a8

05-27 00:57:14.420: I/System.out(1388): token: c00cc566623yk3e3x6rXZ3gOj5Jc5a62

接下来可以通过accessToken去获取用户其他信息
https://api.weipan.cn/2/account/info?access_token=c00cc566623yk3e3x6rXZ3gOj5Jc5a62

 

免责声明:文章转载自《Android第三方登陆》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇tomcat假死 (原因及解决办法)vue.js-详解三大流行框架VUE_快速进阶前端大咖-Vue基础下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Linux-018-Centos Shell 判断软件是否已经安装

编写自动化安装脚本或部署应用的初始化脚本时,通常需要判断软件是否已经安装,通过如下方法,可进行初步的软件安装判断,shell 示例脚本如下所示: #!/bin/bash IS_INSTALLED=$(rpm -qa |grepjava) if [ $? -eq 0] then echo 'installed' else echo 'no...

Docker最全教程——从理论到实战(六)

Docker最全教程——从理论到实战(六) 托管到腾讯云容器服务托管到腾讯云容器服务,我们的公众号“magiccodes”已经发布了相关的录屏教程,大家可以结合本篇教程一起查阅。   自建还是托管? 在开始之前,我们先来讨论一个问题——是自建容器服务还是托管到云容器服务? 这里笔者建议大家托管到云容器服务。对于中小团队来说,很多情况下,团队中的运维人员是缺...

【物联网智能网关13】Html5:Canvas+WebSocket实现远程实时通信(上)

在上一篇博文《网关为核心,互联网为基础构建物联网平台》中简要介绍了基于.NET Micro Framework如何构建Web Server应用,本篇文章将基于Html5的Canvas和WebSocket技术详细介绍远程实时通信的实现。 无论是windows还是linux平台都已提供现成的Web Server技术,在服务端支持诸如ASP.net、ASP、PH...

iOS开发者账号详细介绍

前言:   做为一个iOS应用的开发者,在编码调试过程中,可以使用模拟器来完成整个过程。但是在最后提交上线App的时候,就必须要有一个苹果开发者账号。而我作为一个近乎完全自学的iOS开发者,在开发者证书上也是绕了很多圈,迷茫迷惑。在反复摸索验证的情况下。最后看透了这一切。最初一开始是在淘宝网上购买证书的,后来在公司有了自己的个人开发者账号,在个人开发者账号...

Windows10电脑安装macOS Mojave系统的方法(最新版系统,含超详细步骤截图)

一、环境及准备工作 1、主机系统:本人系统是Windows10家庭中文版 2、虚拟机软件:VMware Workstation 14 Pro      虚拟机版本号:14.1.1 build-7528167 虚拟机下载网址:https://my.vmware.com/web/vmware/details?productId=686&rPId=254...

ASP.NET CORE中使用Cookie身份认证

大家在使用ASP.NET的时候一定都用过FormsAuthentication做登录用户的身份认证,FormsAuthentication的核心就是Cookie,ASP.NET会将用户名存储在Cookie中。 现在到了ASP.NET CORE的时代,但是ASP.NET CORE中没有FormsAuthentication这个东西,那么怎么做身份认证呢?答案...