查看: 751|回复: 0

[手机开发] Android第三方登录与服务器端验证过程

发表于 2018-1-31 08:00:00
开篇

随着时代的发展,现在对App要求不像早几年那样,大多数应用还是未联网的,现在的应用程序如果不能与用户进行较好的交互,就会少了太多的竞争力。说到交互,就必需要求我们访问网络,进行数据的交互。因为需要用户的信息,又少不了注册和登录的功能,而现在五花八门的账号,使得一些用户不想再又去注册一个,这里对于开发人员或者中小企业来说最好的选择就是直接使用第三方账号了,这里虽然标题是android,但其实这个过程和什么平台是没有什么关系的。

第三方账号与后台的绑定

这里主要讲讲最常见的QQ登录,首先我们需要的是去腾讯的开放平台去申请,以及读取官方文档,这些东西就不重复了。这里我们的重点是如何将用户
信息与后台进行相应的绑定,之前我没自己写过后台,刚开始面对这些时也是很模糊的,去百度搜出来的第三方登录,基本上都是讲OAuth协议的,也正是因为这一点,更加不清晰了。其实我们在移动端的登录与web端还是有较大的区别的,很重要的,就是登录后的回调。
既然要与后台进行绑定,肯定是需要唯一的标识符作为标准,因为保证安全性,所以我们在移动端进行登录后,并不能直接获取QQ账号,于是腾讯给我们提供了32位的OPEN_ID用来作为唯一标识,并且不同的应用OPEN_ID是不同的,但对于一个应用而言,这是唯一的标识符。
所以后台进行注册时
1.需要在服务器端判断数据库中中是否存在这个OPEN_ID 如果存在,就说明用户已经存在了,无需再进行注册。
2.如果不存在, 就从客户端向服务器端传递Access_Token和OPEN_ID,服务器端接收后就在这个地址进行验证

  1. https://graph.qq.com/user/get_user_info?access_token=客户端传来的access_token&oauth_consumer_key=你申请到的appkey&openid=客户端传来的OPEN_ID&
复制代码

请求后,这里会有一个返回一个键ret,值为0表示返回用户信息成功,这里进行下判断就可以了。
3.这样通过这两步就能与客户端登录的账号进行绑定。这里注意,登录其实就只是做一个验证而已。

使用JWT方式进行验证

上面说了与客户端与服务器端之间的绑定(其实就是类似于注册过程,不过用户不知道而已,过程都是交给后台去完成)。
注册成功后,可以使用一种比较安全,并且快速的验证方式,也就是JSON WEB TOKEN方式进行验证,对前端了解的朋友应该很熟悉这种方式,不熟悉的可以去网上搜一下,用这种方式进行请求验证,无需携带敏感信息。
1.首先用账号密码进行请求,服务器端返回给我们一个加密后的值。
(这里如果我们用Open_Id作为用户的唯一标识符的话,可以把用户信息的其它字段当作参数传递,这里就要结合具体的语言去进行修改了)
2.获取这个值后,可以保存在本地,等某些请求需要进行身份验证时,在把该值加入到请求头中。
3.请求时,还需要再加密后的这段值前面加上自定义的字符串。
这样一来即使服务器端返回的这个值被泄漏,用户的敏感信息照样能得到安全保证。在移动端进行请求时,直接携带请求头,就能快速的完成身份验证,实现单点登录。

结尾

因为这里这是阐述这个过程,没有具体的代码,所以就暂时到这里了。因为我觉得,对一门语言基本的东西解了,关键就是搞清楚这些业务逻辑,了解交互的过程,不局限于某一种语言,结合具体的框架去做相应的调整。经验无非也是更加理解整个过程,才能得来的。



回复

使用道具 举报