CN108347471B - 获取第三方用户信息的方法、装置及*** - Google Patents
获取第三方用户信息的方法、装置及*** Download PDFInfo
- Publication number
- CN108347471B CN108347471B CN201810002075.1A CN201810002075A CN108347471B CN 108347471 B CN108347471 B CN 108347471B CN 201810002075 A CN201810002075 A CN 201810002075A CN 108347471 B CN108347471 B CN 108347471B
- Authority
- CN
- China
- Prior art keywords
- user information
- client
- authorized party
- party
- authorized
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 150
- 230000008569 process Effects 0.000 claims abstract description 57
- 238000004891 communication Methods 0.000 claims abstract description 48
- 230000002085 persistent effect Effects 0.000 claims abstract description 22
- 238000013475 authorization Methods 0.000 claims description 37
- 230000002688 persistence Effects 0.000 claims description 10
- 238000012545 processing Methods 0.000 claims description 4
- 238000012423 maintenance Methods 0.000 abstract description 6
- 230000005540 biological transmission Effects 0.000 description 7
- 230000000694 effects Effects 0.000 description 6
- 238000012795 verification Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 5
- 238000013468 resource allocation Methods 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 235000006719 Cassia obtusifolia Nutrition 0.000 description 2
- 235000014552 Cassia tora Nutrition 0.000 description 2
- 244000201986 Cassia tora Species 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 230000004083 survival effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/04—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
- H04L63/0428—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/541—Client-server
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Between Computers (AREA)
- Storage Device Security (AREA)
Abstract
本发明提供获取第三方用户信息的方法、装置及***,所述方法包括:S11,接收被授权方客户端发送的用户信息请求,根据所述用户信息请求从授权方服务器获取用户信息,并对所述用户信息进行本地持久化;其中,所述被授权方客户端和授权方客户端之间以AIDL‑IPC方式进行通信;S12,接收所述被授权方客户端对所述授权方客户端中用户信息的访问,将所述用户信息发送给所述被授权方客户端。本发明通过基于授权方客户端和被授权方客户端之间的AIDL‑IPC通信,实现被授权方客户端跨进程访问本地持久化数据,从而获取授权方的用户信息,在授权方客户端的主进程处于死亡状态或被卸载,能进行正常通信,此外便于后期维护。
Description
技术领域
本发明属于Android应用领域,更具体地,涉及获取第三方用户信息的方法、装置及***。
背景技术
目前,第三方登录应用广泛。所谓第三方登录是指利用用户在第三方平台上已有的账号快速完成本应用的登录或者注册的功能。所述第三方平台一般是已经有大量用户的平台,如新浪微博、QQ、微信Facebook、twitter等等。
所述第三方登录的步骤包括:被授权方集成授权方登录的SDK(SoftwareDevelopment Kit,软件开发工具包);被授权方请求授权方进行授权;授权方授权给被授权方发送授权码;被授权方携带授权码向授权方发送用户信息请求;授权方将所述用户信息传递给被授权方。
目前,第三方登录中的授权方,如QQ、微信、淘宝,采用Intent方式将用户信息传递给被授权方。Android提供Intent机制协助应用间的交互与通信,Intent负责对应用中一次操作的动作、动作涉及的数据和附加数据进行描述,Android根据所述描述找到对应的组件,将Intent传递给调用的组件,并完成组件的调用。
由于Android***中具备传递和接受Intent的有Activity、Service、BroadcastReceiver等组件,这些组件需要被授权方单独创建,一旦应用包名出现变更,需要重新创建这些组件,后期可维护性低。此外,Intent只能在进程存活状态下实现传递,一旦授权方app的主进程处于死亡状态或被卸载,授权过程将随机终止。
发明内容
为克服上述获取第三方用户信息的可维护性低,只能在进程存活状态下实现通信的问题或者至少部分地解决上述问题,本发明提供了获取第三方用户信息的方法、装置及***。
根据本发明的第一方面,提供获取第三方用户信息的方法,包括:
S11,接收被授权方客户端发送的用户信息请求,根据所述用户信息请求从授权方服务器获取用户信息,并对所述用户信息进行本地持久化;其中,所述被授权方客户端和授权方客户端之间以AIDL-IPC方式进行通信;
S12,接收所述被授权方客户端对所述授权方客户端中用户信息的访问,将所述用户信息发送给所述被授权方客户端。
具体地,所述步骤S11具体包括:
根据所述用户信息请求,向授权方服务器发送查询用户信息;
接收所述授权方服务器根据所述查询用户信息返回的用户信息;
将所述用户信息以SharePreferences方式存储到本地的首选项文件中,并为所述首选项文件定义唯一的文件名。
具体地,所述步骤S12中接收所述被授权方客户端对所述授权方客户端中用户信息的访问具体包括:
若所述用户信息的Token不存在,则向所述授权方服务器请求获取用户信息;
接收所述用户信息,并对所述用户信息进行本地持久化;或者,
若所述Token存在且已过期,则访问所述授权方服务器,以使所述授权方服务器刷新所述用户消息,并更新所述授权方客户端中的用户信息。
具体地,所述步骤S12具体包括:
对所述首选项文件的文件名进行加密;
将加密的所述文件名发送给所述被授权方客户端,以供所述被授权方客户端根据所述文件名使用ContentProvider组件访问所述首选项文件;
对所述用户信息进行加密;
使用ContentProvider组件将加密的所述用户信息以字节流的方式发送给所被授权方客户端,以供所述被授权方客户端对所述用户信息进行解析和校验。
根据本发明的第二方面,提供获取第三方用户信息的方法,包括:
S21,向授权方客户端发送用户信息请求,以供所述授权方客户端根据所述用户信息请求从授权方服务器获取用户信息,并对所述用户信息进行本地持久化;其中,所述授权方客户端和授权方客户端之间以AIDL-IPC方式进行通信;
S22,访问所述授权方客户端中的用户信息,并接受所述授权方客户端发送的所述用户信息。
具体地,所述步骤S22具体包括:
接收所述授权方客户端发送的所述用户信息的首选项文件的文件名,所述用户信息以SharePreferences方式存储在本地的首选项文件中,所述首选项文件的文件名是唯一的;
根据所述文件名使用ContentProvider组件访问所述首选项文件;
接收所述授权方客户端使用ContentProvider组件以字节流方式发送的用户信息,对所述用户信息进行解析。
具体地,所述步骤S22之后还包括:
使用XML解析器将所述用户信息反序列化为XML文档数据结构;
将所述XML文档数据结构的标签与预先创建的XML文档模型的标签进行匹配;
若对于同一标签,所述XML文档数据结构和所述XML文档模型中该标签下用户信息的数据结构不相同,则获知该标签对应的用户信息无效。
根据本发明的第三方面,提供获取第三方用户信息的装置,包括:
获取单元,用于接收被授权方客户端发送的用户信息请求,根据所述用户信息请求从授权方服务器获取用户信息,并对所述用户信息进行本地持久化;其中,所述被授权方客户端和授权方客户端之间以AIDL-IPC方式进行通信;
接收单元,用于接收所述被授权方客户端对所述授权方客户端中用户信息的访问,将所述用户信息发送给所述被授权方客户端。
根据本发明的第四方面,提供获取第三方用户信息的装置,包括:
发送单元,用于向授权方客户端发送用户信息请求,以供所述授权方客户端根据所述用户信息请求从授权方服务器获取用户信息,并对所述用户信息进行本地持久化;其中,所述授权方客户端和授权方客户端之间以AIDL-IPC方式进行通信;
访问单元,用于访问所述授权方客户端中的用户信息,并接受所述授权方客户端发送的所述用户信息。
根据本发明的第五方面,提供获取第三方用户信息的***,包括上述第三方面和第四方面提供的装置。
本发明提供获取第三方用户信息的方法、装置及***,该方法通过基于授权方客户端和被授权方客户端之间的AIDL-IPC通信,实现被授权方客户端跨进程访问本地持久化数据,从而获取授权方的用户信息,在授权方客户端中应用的主进程处于死亡状态或被卸载,授权方客户端和被授权方客户端依然能进行正常通信,此外由于AIDL-IPC技术不依赖于Intent进行数据传递,便于后期维护。
附图说明
图1为本发明实施例提供的获取第三方用户信息的方法整体流程示意图;
图2为本发明另一实施例提供的获取第三方用户信息的方法整体流程示意图;
图3为本发明实施例提供的获取第三方用户信息的装置整体结构示意图;
图4为本发明另一实施例提供的获取第三方用户信息的装置整体结构示意图;
图5为本发明实施例提供的获取第三方用户信息的设备整体结构示意图。
具体实施方式
下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。
在本发明的一个实施例中提供获取第三方用户信息的方法,图1为本发明实施例提供的获取第三方用户信息的方法整体流程示意图,该方法包括:S11,接收被授权方客户端发送的用户信息请求,根据所述用户信息请求从授权方服务器获取用户信息,并对所述用户信息进行本地持久化;其中,所述被授权方客户端和授权方客户端之间以AIDL-IPC方式进行通信;S12,接收所述被授权方客户端对所述授权方客户端中用户信息的访问,将所述用户信息发送给所述被授权方客户端。
具体地,S11之前,在所述被授权方客户端与所述授权方客户端之间建立AIDL-IPC通信。为防止主进程死亡导致的授权方客户端与被授权方客户端无法进行有效通信,使所述授权方客户端中应的用后台进程与所述被授权方客户端中应用的主进程进行AIDL-IPC通信,所述AIDL-IPC通信基于AIDL实现。IPC(Inter-Process Commumnication,进程间通信)指至少两个进程或线程间传送数据或信号的技术或方法。进程是计算机中的程序关于某数据集合上的一次运行活动,是***进行资源分配和调度的基本单位。每个进程都有自己的一部分独立***资源,各进程间彼此是隔离的。进程间通信能使不同的进程互相访问资源并进行协调工作。AIDL(Android Interface Definition Language,Android接口定义语言)是进程间通信方式的,用于生成在Android设备上的两个进程之间进行进程间通信的代码。AIDL-IPC通信是指以AIDL方式进行进程间通信。
S11中,所述被授权方客户端为需要使用第三方用户信息进行登录的客户端。所述授权方客户端为第三方客户端。当所述被授权方客户端需要使用第三方用户信息进行登录时,向所述授权方客户端发送请求用户消息。所述用户消息为第三方用户消息。所述请求用户消息用于向所述授权方客户端请求获取用户消息。所述授权方客户端接收被授权方客户端发送的用户信息请求。所述授权方客户端根据所述请求用户消息从授权方服务器获取用户信息,并通过对所述用户信息进行本地存储实现对所述用户信息进行本地持久化。所述授权方服务器为第三方服务器。S12中,所述被授权方客户端对所述授权方客户端中的用户信息进行访问,所述授权方客户端接收所述被授权方客户端对所述授权方客户端中用户信息的访问。在访问后,所述授权方客户端将所述用户信息发送给所述被授权方客户端。
本实施例通过基于授权方客户端和被授权方客户端之间的AIDL-IPC通信,实现被授权方客户端跨进程访问本地持久化数据,从而获取授权方的用户信息,在授权方客户端中应用的主进程处于死亡状态或被卸载,授权方客户端和被授权方客户端依然能进行正常通信,此外由于AIDL-IPC技术不依赖于Intent进行数据传递,便于后期维护。
在上述实施例的基础上,本实施例中所述步骤S11具体包括:根据所述用户信息请求,向授权方服务器发送查询用户信息;接收所述授权方服务器根据所述查询用户信息返回的用户信息;将所述用户信息以SharePreferences方式存储到本地的首选项文件中,并为所述首选项文件定义唯一的文件名。
具体地,所述授权方客户端根据所述用户信息请求,向授权方服务器发送查询用户信息。所述查询用户信息用于向所述授权方服务器请求查询用户信息。所述授权方服务器根据所述查询用户信息对所述用户信息进行查询,将符合条件的用户信息返回给所述授权方客户端。所述授权方客户端接收到所述返回的用户信息后,将所述用户信息以SharePreferences方式存储到本地的首选项文件中,从而实现对所述用户信息进行本地持久化。SharePreferences(SP,共享首选项)是安卓程序中常用的数据存储方式,其本质是一个XML文件,用于存储少量的、配置类型的数据。由于安卓应用程序只允许单个用户登录后进行登录操作,如果出现切换用户,则SharePreferences中之前保存的用户信息会被新登录用户的用户信息覆盖。为方便跨进程访问SharePreferences,为所述首选项文件定义唯一的文件名。
在上述各实施例的基础上,本实施例中所述步骤S12中接收所述被授权方客户端对所述授权方客户端中用户信息的访问具体包括:若所述用户信息的Token不存在,则向所述授权方服务器请求获取用户信息;接收所述用户信息,并对所述用户信息进行本地持久化;或者,若所述Token存在且已过期,则访问所述授权方服务器,以使所述授权方服务器刷新所述用户消息,并更新所述授权方客户端中的用户信息。
具体地,在所述授权方客户端接收所述被授权方客户端对所述授权方客户端中用户信息的访问时,先判断获取本地存储的用户信息的Token。所述Token是服务端生成的一串字符串,以将所述字符串作为客户端进行请求的一个令牌,当第一次登录后,服务器生成一个Token,并将所述Token返回给客户端,此后客户端只需带上所述Token前来请求数据即可,无需再次带上用户名和密码。若所述用户信息的Token不存在,则说明所述授权方客户端中用户信息为空,所述授权方客户端会随即请求所述授权方服务器获取用户信息,并将获取到的用户信息进行本地持久化。若所述用户信息的Token存在,但已经过了有效期,所述Token的有效期一般为3个月,则所述授权方客户端访问所述授权方服务器,以使所述授权方服务器刷新所述用户消息,并更新所述授权方客户端中的用户信息。若所述Token存在且未过期,则所述授权方客户端无需与所述授权方服务器进行交互。
在上述实施例的基础上,本实施例中所述步骤S12具体包括:对所述首选项文件的文件名进行加密;将加密的所述文件名发送给所述被授权方客户端,以供所述被授权方客户端根据所述文件名使用ContentProvider组件访问所述首选项文件;对所述用户信息进行加密;使用ContentProvider组件将加密的所述用户信息以字节流的方式发送给所被授权方客户端,以供所述被授权方客户端对所述用户信息进行解析和校验。
具体地,由于所述被授权方客户端访问所述授权方客户端中的用户信息涉及跨进程通信,为保证进程间数据传输的保密性,所述授权方客户端对存储所述用户信息的首选项文件的文件名进行加密,如采用MD5加密方法为传输的所述文件名进行加密。本实施例不限于加密方法。所述被授权方客户端根据所述授权方客户端发送的文件名访问所述授权方客户端中的首选项文件。由于所述被授权方客户端是跨进程访问首选项文件,因此所述被授权方客户端根据所述文件名使用Android***中的ContentProvider组件访问所述授权方客户端中的首选项文件。所述ContentProvider组件用于跨进程间的数据传递。
所述授权方客户端将所述用户信息发送给所述被授权方客户端之前,对所述用户信息进行加密,如采用MD5加密方法为传输的所述用户信息进行加密。然后使用ContentProvider组件将加密的所述用户信息以字节流ByteOutputStream方式传递给所述被授权方客户端中应用的主进程,以供所述被授权方客户端对所述用户信息进行解析和校验。
在本发明的另一个实施例中提高获取第三方用户信息的方法,图2为本发明另一实施例提供的获取第三方用户信息的方法整体流程示意图,该方法包括:S21,向授权方客户端发送用户信息请求,以供所述授权方客户端根据所述用户信息请求从授权方服务器获取用户信息,并对所述用户信息进行本地持久化;其中,所述授权方客户端和授权方客户端之间以AIDL-IPC方式进行通信;S22,访问所述授权方客户端中的用户信息,并接受所述授权方客户端发送的所述用户信息。
具体地,具体地,S21之前,在所述被授权方客户端与所述授权方客户端之间建立AIDL-IPC通信。为防止主进程死亡导致的授权方客户端与被授权方客户端无法进行有效通信,使所述授权方客户端中应的用后台进程与所述被授权方客户端中应用的主进程进行AIDL-IPC通信,所述AIDL-IPC通信基于AIDL实现。IPC(Inter-Process Commumnication,进程间通信)指至少两个进程或线程间传送数据或信号的技术或方法。进程是计算机中的程序关于某数据集合上的一次运行活动,是***进行资源分配和调度的基本单位。每个进程都有自己的一部分独立***资源,各进程间彼此是隔离的。进程间通信能使不同的进程互相访问资源并进行协调工作。AIDL(Android Interface Definition Language,Android接口定义语言)是进程间通信方式的,用于生成在Android设备上的两个进程之间进行进程间通信的代码。AIDL-IPC通信是指以AIDL方式进行进程间通信。
S21中,所述被授权方客户端为需要使用第三方用户信息进行登录的客户端。所述授权方客户端为第三方客户端。当所述被授权方客户端需要使用第三方用户信息进行登录时,向所述授权方客户端发送请求用户消息。所述用户消息为第三方用户消息。所述请求用户消息用于向所述授权方客户端请求获取用户消息。所述授权方客户端根据所述用户信息请求,向授权方服务器发送查询用户信息。所述查询用户信息用于向所述授权方服务器请求查询用户信息。所述授权方服务器根据所述查询用户信息对所述用户信息进行查询,将符合条件的用户信息返回给所述授权方客户端。所述授权方客户端接收到所述返回的用户信息后,将所述用户信息以SharePreferences方式存储到本地的首选项文件中,从而实现对所述用户信息进行本地持久化。所述授权方服务器为第三方服务器。由于安卓应用程序只允许单个用户登录后进行登录操作,如果出现切换用户,则SharePreferences中之前保存的用户信息会被新登录用户的用户信息覆盖。为方便跨进程访问SharePreferences,为所述的首选项文件定义唯一的文件名。
S22中,在所述被授权方客户端对所述授权方客户端中的用户信息进行访问时,所述授权方客户端先判断获取本地存储的用户信息的Token。所述Token是服务端生成的一串字符串,以将所述字符串作为客户端进行请求的一个令牌,当第一次登录后,服务器生成一个Token,并将所述Token返回给客户端,此后客户端只需带上所述Token前来请求数据即可,无需再次带上用户名和密码。若所述用户信息的Token不存在,则说明所述授权方客户端中用户信息为空,所述授权方客户端会随即请求所述授权方服务器获取用户信息,并将获取到的用户信息进行本地持久化。若所述用户信息的Token存在,但已经过了有效期,所述Token的有效期一般为3个月,则所述授权方客户端访问所述授权方服务器,以使所述授权方服务器刷新所述用户消息,并更新所述授权方客户端中的用户信息。若所述Token存在且未过期,则所述授权方客户端无需与所述授权方服务器进行交互。在访问后,所述被授权方客户端接受所述被授权方客户端发送的用户信息。
本实施例通过基于授权方客户端和被授权方客户端之间的AIDL-IPC通信,实现被授权方客户端跨进程访问本地持久化数据,从而获取授权方的用户信息,在授权方客户端中应用的主进程处于死亡状态或被卸载,授权方客户端和被授权方客户端依然能进行正常通信,此外由于AIDL-IPC技术不依赖于Intent进行数据传递,便于后期维护。
在上述实施例的基础上,本实施例中所述步骤S22具体包括:接收所述授权方客户端发送的所述用户信息的首选项文件的文件名,所述用户信息以SharePreferences方式存储在本地的首选项文件中,所述首选项文件的文件名是唯一的;根据所述文件名使用ContentProvider组件访问所述首选项文件;接收所述授权方客户端使用ContentProvider组件以字节流方式发送的用户信息,对所述用户信息进行解析。
具体地,由于所述被授权方客户端访问所述授权方客户端中的用户信息涉及跨进程通信,为保证进程间数据传输的保密性,所述授权方客户端对存储所述用户信息的首选项文件的文件名进行加密,如采用MD5加密方法为传输的所述文件名进行加密。本实施例不限于加密方法。所述被授权方客户端根据接收的所述授权方客户端发送的文件名访问所述授权方客户端中的首选项文件。由于所述被授权方客户端是跨进程访问首选项文件,因此所述被授权方客户端根据所述文件名使用Android***中的ContentProvider组件访问所述授权方客户端中的首选项文件。所述ContentProvider组件用于跨进程间的数据传递。
所述授权方客户端将所述用户信息发送给所述被授权方客户端之前,对所述用户信息进行加密,如采用MD5加密方法为传输的所述用户信息进行加密。然后使用ContentProvider组件将加密的所述用户信息以字节流ByteOutputStream方式传递给所述被授权方客户端中应用的主进程。所述被授权方客户端接收所述用户信息,并对所述用户信息进行解析和校验。
在上述各实施例的基础上,本实施例中所述步骤S22之后还包括:使用XML解析器将所述用户信息反序列化为XML文档数据结构;将所述XML文档数据结构的标签与预先创建的XML文档模型的标签进行匹配;若对于同一标签,所述XML文档数据结构和所述XML文档模型中该标签下用户信息的数据结构不相同,则获知该标签对应的用户信息无效。
具体地,所述被授权方客户端获取到用户信息后会随机对所述用户信息进行校验。常规的校验方式是将所述用户信息反序列化为JavaBean对象,计算其哈希码值。然后判断所述哈希码值是否匹配所述授权方客户端预先构建的哈希码校验表。但这种方法仅在所述用户信息的数据结构较为单一的情况下可行,如果所述用户信息的数据结构较为复杂,数据量大,这种方法较为耗时。
本实施例中所述被授权方客户端接收的用户信息为Java可存取的对象,所述XML解析器一般用于将所述XML文档数据结构解析为Java可存取的对象,这里所述XML解析器用于将所述用户信息反序列化为XML文档数据结构。所述反序列化为将在序列化过程中所生成的二进制串转换成数据结构或者对象的过程。预选创建用于校验的XML文档模型,所述XML文档模型基于XML文档格式,如:
<user id=”localResolver”class=”com.android.user”>
<modle>
<name>yincheng</name>//由字母和数据组成,长度不超过8字节
<age>26</age>//范围18~100
<sex>male</sex>//male或female
</modle>
</user>
将所述XML文档数据结构的标签与预先创建的XML文档模型的标签进行匹配,例如<name>标签下的用户名必须由字母和数据组成,长度不超过8字节。若所述XML文档数据结构中<name>标签下用户名的数据结构不满足所述XML文档模型中用户名的数据结构,则所述用户名无效。
本实施例中基于XML文档格式预先构建校验模型,采用模型匹配方式快速完成用户信息的校验,只需要单个模型即可快速完成校验,提高了校验效率。
在本发明的另一个实施例中提供获取第三方用户信息的装置,图3为本发明实施例提供的获取第三方用户信息的装置整体结构示意图,该装置包括获取单元11和接收单元12,其中:
所述获取单元11用于接收被授权方客户端发送的用户信息请求,根据所述用户信息请求从授权方服务器获取用户信息,并对所述用户信息进行本地持久化;其中,所述被授权方客户端和授权方客户端之间以AIDL-IPC方式进行通信;所述接收单元12用于接收所述被授权方客户端对所述授权方客户端中用户信息的访问,将所述用户信息发送给所述被授权方客户端。
具体地,在所述被授权方客户端与所述授权方客户端之间建立AIDL-IPC通信。为防止主进程死亡导致的授权方客户端与被授权方客户端无法进行有效通信,使所述授权方客户端中应的用后台进程与所述被授权方客户端中应用的主进程进行AIDL-IPC通信,所述AIDL-IPC通信基于AIDL实现。IPC(Inter-Process Commumnication,进程间通信)指至少两个进程或线程间传送数据或信号的技术或方法。进程是计算机中的程序关于某数据集合上的一次运行活动,是***进行资源分配和调度的基本单位。每个进程都有自己的一部分独立***资源,各进程间彼此是隔离的。进程间通信能使不同的进程互相访问资源并进行协调工作。AIDL(Android Interface Definition Language,Android接口定义语言)是进程间通信方式的,用于生成在Android设备上的两个进程之间进行进程间通信的代码。AIDL-IPC通信是指以AIDL方式进行进程间通信。
所述被授权方客户端为需要使用第三方用户信息进行登录的客户端。所述授权方客户端为第三方客户端。当所述被授权方客户端需要使用第三方用户信息进行登录时,向所述获取单元11发送请求用户消息。所述用户消息为第三方用户消息。所述请求用户消息用于向所述授权方客户端请求获取用户消息。所述获取单元11接收被授权方客户端发送的用户信息请求。所述获取单元11根据所述请求用户消息从授权方服务器获取用户信息,并通过对所述用户信息进行本地存储实现对所述用户信息进行本地持久化。所述授权方服务器为第三方服务器。所述被授权方客户端对所述授权方客户端中的用户信息进行访问,所述接收单元12接收所述被授权方客户端对所述授权方客户端中用户信息的访问。在访问后,所述接收单元12将所述用户信息发送给所述被授权方客户端。
本实施例通过基于授权方客户端和被授权方客户端之间的AIDL-IPC通信,实现被授权方客户端跨进程访问本地持久化数据,从而获取授权方的用户信息,在授权方客户端中应用的主进程处于死亡状态或被卸载,授权方客户端和被授权方客户端依然能进行正常通信,此外由于AIDL-IPC技术不依赖于Intent进行数据传递,便于后期维护。
在上述实施例的基础上,本实施例中所述获取单元具体用于:根据所述用户信息请求,向授权方服务器发送查询用户信息;接收所述授权方服务器根据所述查询用户信息返回的用户信息;将所述用户信息以SharePreferences方式存储到本地的首选项文件中,并为所述首选项文件定义唯一的文件名。
在上述各实施例的基础上,本实施例中所述接收单元具体用于:若所述用户信息的Token不存在,则向所述授权方服务器请求获取用户信息;接收所述用户信息,并对所述用户信息进行本地持久化;或者,若所述Token存在且已过期,则访问所述授权方服务器,以使所述授权方服务器刷新所述用户消息,并更新所述授权方客户端中的用户信息。
在上述实施例的基础上,本实施例中所述接收单元具体用于:对所述首选项文件的文件名进行加密;将加密的所述文件名发送给所述被授权方客户端,以供所述被授权方客户端根据所述文件名使用ContentProvider组件访问所述首选项文件;对所述用户信息进行加密;使用ContentProvider组件将加密的所述用户信息以字节流的方式发送给所被授权方客户端,以供所述被授权方客户端对所述用户信息进行解析和校验。
在本发明的另一个实施例中提供获取第三方用户信息的装置,图4为本发明另一实施例提供的获取第三方用户信息的装置整体结构示意图,该装置包括发送单元21和访问单元22,其中:
所述发送单元21用于向授权方客户端发送用户信息请求,以供所述授权方客户端根据所述用户信息请求从授权方服务器获取用户信息,并对所述用户信息进行本地持久化;其中,所述授权方客户端和授权方客户端之间以AIDL-IPC方式进行通信;所述访问单元22用于访问所述授权方客户端中的用户信息,并接受所述授权方客户端发送的所述用户信息。
具体地,在所述被授权方客户端与所述授权方客户端之间建立AIDL-IPC通信。为防止主进程死亡导致的授权方客户端与被授权方客户端无法进行有效通信,使所述授权方客户端中应的用后台进程与所述被授权方客户端中应用的主进程进行AIDL-IPC通信,所述AIDL-IPC通信基于AIDL实现。IPC(Inter-Process Commumnication,进程间通信)指至少两个进程或线程间传送数据或信号的技术或方法。进程是计算机中的程序关于某数据集合上的一次运行活动,是***进行资源分配和调度的基本单位。每个进程都有自己的一部分独立***资源,各进程间彼此是隔离的。进程间通信能使不同的进程互相访问资源并进行协调工作。AIDL(Android Interface Definition Language,Android接口定义语言)是进程间通信方式的,用于生成在Android设备上的两个进程之间进行进程间通信的代码。AIDL-IPC通信是指以AIDL方式进行进程间通信。
所述被授权方客户端为需要使用第三方用户信息进行登录的客户端。所述授权方客户端为第三方客户端。当所述被授权方客户端需要使用第三方用户信息进行登录时,所述发送单元21向所述授权方客户端发送请求用户消息。所述用户消息为第三方用户消息。所述请求用户消息用于向所述授权方客户端请求获取用户消息。所述授权方客户端根据所述用户信息请求,向授权方服务器发送查询用户信息。所述查询用户信息用于向所述授权方服务器请求查询用户信息。所述授权方服务器根据所述查询用户信息对所述用户信息进行查询,将符合条件的用户信息返回给所述授权方客户端。所述授权方客户端接收到所述返回的用户信息后,将所述用户信息以SharePreferences方式存储到本地的首选项文件中,从而实现对所述用户信息进行本地持久化。所述授权方服务器为第三方服务器。由于安卓应用程序只允许单个用户登录后进行登录操作,如果出现切换用户,则SharePreferences中之前保存的用户信息会被新登录用户的用户信息覆盖。为方便跨进程访问SharePreferences,为所述首选项文件定义唯一的文件名。
所述访问单元22对所述授权方客户端中的用户信息进行访问。在访问时所述授权方客户端先判断获取本地存储的用户信息的Token。所述Token是服务端生成的一串字符串,以将所述字符串作为客户端进行请求的一个令牌,当第一次登录后,服务器生成一个Token,并将所述Token返回给客户端,此后客户端只需带上所述Token前来请求数据即可,无需再次带上用户名和密码。若所述用户信息的Token不存在,则说明所述授权方客户端中用户信息为空,所述授权方客户端会随即请求所述授权方服务器获取用户信息,并将获取到的用户信息进行本地持久化。若所述用户信息的Token存在,但已经过了有效期,所述Token的有效期一般为3个月,则所述授权方客户端访问所述授权方服务器,以使所述授权方服务器刷新所述用户消息,并更新所述授权方客户端中的用户信息。若所述Token存在且未过期,则所述授权方客户端无需与所述授权方服务器进行交互。在访问后,所述访问单元22接受所述被授权方客户端发送的用户信息。
本实施例通过基于授权方客户端和被授权方客户端之间的AIDL-IPC通信,实现被授权方客户端跨进程访问本地持久化数据,从而获取授权方的用户信息,在授权方客户端中应用的主进程处于死亡状态或被卸载,授权方客户端和被授权方客户端依然能进行正常通信,此外由于AIDL-IPC技术不依赖于Intent进行数据传递,便于后期维护。
在上述实施例的基础上,本实施例中所述访问单元具体用于:接收所述授权方客户端发送的所述用户信息的首选项文件的文件名,所述用户信息以SharePreferences方式存储在本地的首选项文件中,所述首选项文件的文件名是唯一的;根据所述文件名使用ContentProvider组件访问所述首选项文件;接收所述授权方客户端使用ContentProvider组件以字节流方式发送的用户信息,对所述用户信息进行解析。
在上述各实施例的基础上,本实施例中所述装置还包括解析单元,用于使用XML解析器将所述用户信息反序列化为XML文档数据结构;将所述XML文档数据结构的标签与预先创建的XML文档模型的标签进行匹配;若对于同一标签,所述XML文档数据结构和所述XML文档模型中该标签下用户信息的数据结构不相同,则获知该标签对应的用户信息无效。
本实施例提供获取第三方用户信息的***,所述***至少包括上述实施例中的获取单元、接收单元、发送单元和访问单元。
本实施例提供获取第三方用户信息的设备,图5为本发明实施例提供的获取第三方用户信息的设备整体结构示意图,该设备包括:至少一个处理器51、至少一个存储器52和总线53;其中,
所述处理器51和存储器52通过所述总线53完成相互间的通信;
所述存储器52存储有可被所述处理器51执行的程序指令,所述处理器调用所述程序指令能够执行上述各方法实施例所提供的方法,例如包括:S11,接收被授权方客户端发送的用户信息请求,根据所述用户信息请求从授权方服务器获取用户信息,并对所述用户信息进行本地持久化;其中,所述被授权方客户端和授权方客户端之间以AIDL-IPC方式进行通信;S12,接收所述被授权方客户端对所述授权方客户端中用户信息的访问,将所述用户信息发送给所述被授权方客户端。
本实施例提供非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行上述各方法实施例所提供的方法,例如包括:S11,接收被授权方客户端发送的用户信息请求,根据所述用户信息请求从授权方服务器获取用户信息,并对所述用户信息进行本地持久化;其中,所述被授权方客户端和授权方客户端之间以AIDL-IPC方式进行通信;S12,接收所述被授权方客户端对所述授权方客户端中用户信息的访问,将所述用户信息发送给所述被授权方客户端。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所描述的获取第三方用户信息的设备实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后,本申请的方法仅为较佳的实施方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (8)
1.一种获取第三方用户信息的方法,其特征在于,包括:
S11,接收被授权方客户端发送的用户信息请求,根据所述用户信息请求从授权方服务器获取用户信息,并对所述用户信息进行本地持久化;其中,所述被授权方客户端和授权方客户端之间以AIDL-IPC方式进行通信,实现所述被授权方客户端跨进程访问本地持久化数据;AIDL-IPC是指以AIDL方式进行进程间通信;
S12,接收所述被授权方客户端对所述授权方客户端中用户信息的访问,将所述用户信息发送给所述被授权方客户端;
其中,所述步骤S11具体包括:
根据所述用户信息请求,向授权方服务器发送查询用户信息;
接收所述授权方服务器根据所述查询用户信息返回的用户信息;
将所述用户信息以SharePreferences方式存储到本地的首选项文件中,并为所述首选项文件定义唯一的文件名。
2.根据权利要求1所述的方法,其特征在于,所述步骤S12还包括:
若所述用户信息的Token不存在,则向所述授权方服务器请求获取用户信息;
接收所述用户信息,并对所述用户信息进行本地持久化;或者,
若所述Token存在且已过期,则访问所述授权方服务器,以使所述授权方服务器刷新所述用户消息,并更新所述授权方客户端中的用户信息。
3.根据权利要求1所述的方法,其特征在于,所述步骤S12具体包括:
对所述首选项文件的文件名进行加密;
将加密的所述文件名发送给所述被授权方客户端,以供所述被授权方客户端根据所述文件名使用ContentProvider组件访问所述首选项文件;
对所述用户信息进行加密;
使用ContentProvider组件将加密的所述用户信息以字节流的方式发送给所被授权方客户端,以供所述被授权方客户端对所述用户信息进行解析和校验。
4.一种获取第三方用户信息的方法,其特征在于,包括:
S21,向授权方客户端发送用户信息请求,以供所述授权方客户端根据所述用户信息请求从授权方服务器获取用户信息,并对所述用户信息进行本地持久化;其中,所述授权方客户端和被授权方客户端之间以AIDL-IPC方式进行通信,实现所述被授权方客户端跨进程访问本地持久化数据;AIDL-IPC是指以AIDL方式进行进程间通信;
S22,访问所述授权方客户端中的用户信息,并接受所述授权方客户端发送的所述用户信息;
其中,所述步骤S22具体包括:
接收所述授权方客户端发送的所述用户信息的首选项文件的文件名,所述用户信息以SharePreferences方式存储在本地的首选项文件中,所述首选项文件的文件名是唯一的;
根据所述文件名使用ContentProvider组件访问所述首选项文件;
接收所述授权方客户端使用ContentProvider组件以字节流方式发送的用户信息,对所述用户信息进行解析。
5.根据权利要求4所述的方法,其特征在于,所述步骤S22之后还包括:
使用XML解析器将所述用户信息反序列化为XML文档数据结构;
将所述XML文档数据结构的标签与预先创建的XML文档模型的标签进行匹配;
若对于同一标签,所述XML文档数据结构和所述XML文档模型中该标签下用户信息的数据结构不相同,则获知该标签对应的用户信息无效。
6.一种获取第三方用户信息的装置,其特征在于,包括:
获取单元,用于接收被授权方客户端发送的用户信息请求,根据所述用户信息请求从授权方服务器获取用户信息,并对所述用户信息进行本地持久化;其中,所述被授权方客户端和授权方客户端之间以AIDL-IPC方式进行通信,实现所述被授权方客户端跨进程访问本地持久化数据;AIDL-IPC是指以AIDL方式进行进程间通信;
接收单元,用于接收所述被授权方客户端对所述授权方客户端中用户信息的访问,将所述用户信息发送给所述被授权方客户端;
其中,所述获取单元用于:
根据所述用户信息请求,向授权方服务器发送查询用户信息;
接收所述授权方服务器根据所述查询用户信息返回的用户信息;
将所述用户信息以SharePreferences方式存储到本地的首选项文件中,并为所述首选项文件定义唯一的文件名。
7.一种获取第三方用户信息的装置,其特征在于,包括:
发送单元,用于向授权方客户端发送用户信息请求,以供所述授权方客户端根据所述用户信息请求从授权方服务器获取用户信息,并对所述用户信息进行本地持久化;其中,所述授权方客户端和授权方客户端之间以AIDL-IPC方式进行通信,实现被授权方客户端跨进程访问本地持久化数据;AIDL-IPC是指以AIDL方式进行进程间通信;
访问单元,用于访问所述授权方客户端中的用户信息,并接受所述授权方客户端发送的所述用户信息;
其中,所述访问单元用于:
接收所述授权方客户端发送的所述用户信息的首选项文件的文件名,所述用户信息以SharePreferences方式存储在本地的首选项文件中,所述首选项文件的文件名是唯一的;
根据所述文件名使用ContentProvider组件访问所述首选项文件;
接收所述授权方客户端使用ContentProvider组件以字节流方式发送的用户信息,对所述用户信息进行解析。
8.一种获取第三方用户信息的***,其特征在于,包括如权利要求6和7所述的获取第三方用户信息的装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810002075.1A CN108347471B (zh) | 2018-01-02 | 2018-01-02 | 获取第三方用户信息的方法、装置及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810002075.1A CN108347471B (zh) | 2018-01-02 | 2018-01-02 | 获取第三方用户信息的方法、装置及*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108347471A CN108347471A (zh) | 2018-07-31 |
CN108347471B true CN108347471B (zh) | 2021-07-23 |
Family
ID=62960665
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810002075.1A Active CN108347471B (zh) | 2018-01-02 | 2018-01-02 | 获取第三方用户信息的方法、装置及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108347471B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111405016B (zh) * | 2020-03-09 | 2023-02-17 | 广州方硅信息技术有限公司 | 用户信息获取方法及相关设备 |
CN111538965B (zh) * | 2020-04-15 | 2021-10-12 | 支付宝(杭州)信息技术有限公司 | 一种应用程序的授权登录方法、装置及*** |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103428525A (zh) * | 2013-07-22 | 2013-12-04 | 华中科技大学 | 网络视频和电视节目的在线查询和播放控制方法及*** |
CN107506124A (zh) * | 2017-08-29 | 2017-12-22 | 武汉斗鱼网络科技有限公司 | 视频交友方法及*** |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8893222B2 (en) * | 2012-11-13 | 2014-11-18 | Auckland Uniservices Ltd. | Security system and method for the android operating system |
CN105468462B (zh) * | 2014-08-14 | 2020-11-03 | 腾讯科技(深圳)有限公司 | 进程间通信身份验证及应用软件间通信方法和*** |
CN104837159B (zh) * | 2015-05-11 | 2018-01-30 | 上海交通大学 | Android平台OAuth协议误用安全检测方法 |
CN105072133B (zh) * | 2015-08-28 | 2018-07-10 | 北京金山安全软件有限公司 | 一种应用程序的登录方法及装置 |
CN105897668A (zh) * | 2015-10-22 | 2016-08-24 | 乐视致新电子科技(天津)有限公司 | 一种第三方账号授权方法、设备、服务器及其*** |
-
2018
- 2018-01-02 CN CN201810002075.1A patent/CN108347471B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103428525A (zh) * | 2013-07-22 | 2013-12-04 | 华中科技大学 | 网络视频和电视节目的在线查询和播放控制方法及*** |
CN107506124A (zh) * | 2017-08-29 | 2017-12-22 | 武汉斗鱼网络科技有限公司 | 视频交友方法及*** |
Also Published As
Publication number | Publication date |
---|---|
CN108347471A (zh) | 2018-07-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108306877B (zh) | 基于node js的用户身份信息的验证方法、装置和存储介质 | |
KR20220079958A (ko) | 블록체인 메시지 처리 방법 및 장치, 컴퓨터 및 판독 가능한 저장 매체 | |
CN111600909A (zh) | 数据处理方法、装置、协议转换设备及存储介质 | |
WO2021013058A1 (zh) | 大数据产品的异常提示方法、装置、***、设备及介质 | |
US20040093515A1 (en) | Cross platform network authentication and authorization model | |
WO2019052526A1 (zh) | Api调用***、方法、装置、电子设备及存储介质 | |
CN109815025B (zh) | 一种业务模型调用方法、装置及存储介质 | |
CN109951546B (zh) | 基于智能合约的事务请求处理方法、装置、设备和介质 | |
US10025599B1 (en) | Connectivity as a service | |
US20120016999A1 (en) | Context for Sharing Data Objects | |
JP2004303214A (ja) | データベース変更通知を要求および受信するためのシステムおよび方法 | |
WO2015192582A1 (zh) | 虚拟桌面登录验证方法和装置 | |
US10666571B2 (en) | Method and apparatus for providing access of content resources | |
CN109918191B (zh) | 一种业务请求防频的方法和装置 | |
CN110138818B (zh) | 传递参数的方法、网站应用、***、装置以及服务后端 | |
WO2018077284A1 (zh) | 通信方法和***、电子设备和计算机集群 | |
CN110826049B (zh) | 基于智慧企业门户的单点登录实现*** | |
EP4340333A1 (en) | Communication protocol conversion method, and device, system, and gateway device | |
US11689626B2 (en) | Transport channel via web socket for ODATA | |
CN111414381A (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN108347471B (zh) | 获取第三方用户信息的方法、装置及*** | |
US11449352B2 (en) | Systems and methods for converting record formats | |
WO2017114103A1 (zh) | 一种云加密机的处理方法及装置 | |
WO2023024057A1 (zh) | 跨域授权处理方法及跨域调用处理方法 | |
US9626444B2 (en) | Continuously blocking query result data for a remote query |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20231221 Address after: No. 49 Donghai West Road, Qingdao City, Shandong Province, 266071 Patentee after: Qingdao Engineering Consulting Institute Address before: 430000 East Lake Development Zone, Wuhan City, Hubei Province, No. 1 Software Park East Road 4.1 Phase B1 Building 11 Building Patentee before: WUHAN DOUYU NETWORK TECHNOLOGY Co.,Ltd. |
|
TR01 | Transfer of patent right |