CN108347471A - 获取第三方用户信息的方法、装置及系统 - Google Patents

获取第三方用户信息的方法、装置及系统 Download PDF

Info

Publication number
CN108347471A
CN108347471A CN201810002075.1A CN201810002075A CN108347471A CN 108347471 A CN108347471 A CN 108347471A CN 201810002075 A CN201810002075 A CN 201810002075A CN 108347471 A CN108347471 A CN 108347471A
Authority
CN
China
Prior art keywords
user information
client
authorized
party
authorized party
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.)
Granted
Application number
CN201810002075.1A
Other languages
English (en)
Other versions
CN108347471B (zh
Inventor
尹成
张文明
陈少杰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qingdao Engineering Consulting Institute
Original Assignee
Wuhan Douyu Network Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Wuhan Douyu Network Technology Co Ltd filed Critical Wuhan Douyu Network Technology Co Ltd
Priority to CN201810002075.1A priority Critical patent/CN108347471B/zh
Publication of CN108347471A publication Critical patent/CN108347471A/zh
Application granted granted Critical
Publication of CN108347471B publication Critical patent/CN108347471B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/541Client-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 (10)

1.一种获取第三方用户信息的方法,其特征在于,包括:
S11,接收被授权方客户端发送的用户信息请求,根据所述用户信息请求从授权方服务器获取用户信息,并对所述用户信息进行本地持久化;其中,所述被授权方客户端和授权方客户端之间以AIDL-IPC方式进行通信;
S12,接收所述被授权方客户端对所述授权方客户端中用户信息的访问,将所述用户信息发送给所述被授权方客户端。
2.根据权利要求1所述的方法,其特征在于,所述步骤S11具体包括:
根据所述用户信息请求,向授权方服务器发送查询用户信息;
接收所述授权方服务器根据所述查询用户信息返回的用户信息;
将所述用户信息以SharePreferences方式存储到本地的首选项文件中,并为所述首选项文件定义唯一的文件名。
3.根据权利要求1或2所述的方法,其特征在于,所述步骤S12还包括:
若所述用户信息的Token不存在,则向所述授权方服务器请求获取用户信息;
接收所述用户信息,并对所述用户信息进行本地持久化;或者,
若所述Token存在且已过期,则访问所述授权方服务器,以使所述授权方服务器刷新所述用户消息,并更新所述授权方客户端中的用户信息。
4.根据权利要求2所述的方法,其特征在于,所述步骤S12具体包括:
对所述首选项文件的文件名进行加密;
将加密的所述文件名发送给所述被授权方客户端,以供所述被授权方客户端根据所述文件名使用ContentProvider组件访问所述首选项文件;
对所述用户信息进行加密;
使用ContentProvider组件将加密的所述用户信息以字节流的方式发送给所被授权方客户端,以供所述被授权方客户端对所述用户信息进行解析和校验。
5.一种获取第三方用户信息的方法,其特征在于,包括:
S21,向授权方客户端发送用户信息请求,以供所述授权方客户端根据所述用户信息请求从授权方服务器获取用户信息,并对所述用户信息进行本地持久化;其中,所述授权方客户端和授权方客户端之间以AIDL-IPC方式进行通信;
S22,访问所述授权方客户端中的用户信息,并接受所述授权方客户端发送的所述用户信息。
6.根据权利要求5所述的方法,其特征在于,所述步骤S22具体包括:
接收所述授权方客户端发送的所述用户信息的首选项文件的文件名,所述用户信息以SharePreferences方式存储在本地的首选项文件中,所述首选项文件的文件名是唯一的;
根据所述文件名使用ContentProvider组件访问所述首选项文件;
接收所述授权方客户端使用ContentProvider组件以字节流方式发送的用户信息,对所述用户信息进行解析。
7.根据权利要求5或6所述的方法,其特征在于,所述步骤S22之后还包括:
使用XML解析器将所述用户信息反序列化为XML文档数据结构;
将所述XML文档数据结构的标签与预先创建的XML文档模型的标签进行匹配;
若对于同一标签,所述XML文档数据结构和所述XML文档模型中该标签下用户信息的数据结构不相同,则获知该标签对应的用户信息无效。
8.一种获取第三方用户信息的装置,其特征在于,包括:
获取单元,用于接收被授权方客户端发送的用户信息请求,根据所述用户信息请求从授权方服务器获取用户信息,并对所述用户信息进行本地持久化;其中,所述被授权方客户端和授权方客户端之间以AIDL-IPC方式进行通信;
接收单元,用于接收所述被授权方客户端对所述授权方客户端中用户信息的访问,将所述用户信息发送给所述被授权方客户端。
9.一种获取第三方用户信息的装置,其特征在于,包括:
发送单元,用于向授权方客户端发送用户信息请求,以供所述授权方客户端根据所述用户信息请求从授权方服务器获取用户信息,并对所述用户信息进行本地持久化;其中,所述授权方客户端和授权方客户端之间以AIDL-IPC方式进行通信;
访问单元,用于访问所述授权方客户端中的用户信息,并接受所述授权方客户端发送的所述用户信息。
10.一种获取第三方用户信息的系统,其特征在于,包括如权利要求8和9所述的获取第三方用户信息的装置。
CN201810002075.1A 2018-01-02 2018-01-02 获取第三方用户信息的方法、装置及系统 Active CN108347471B (zh)

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 true CN108347471A (zh) 2018-07-31
CN108347471B 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)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111405016A (zh) * 2020-03-09 2020-07-10 广州华多网络科技有限公司 用户信息获取方法及相关设备
CN111538965A (zh) * 2020-04-15 2020-08-14 支付宝(杭州)信息技术有限公司 一种应用程序的授权登录方法、装置及系统

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103428525A (zh) * 2013-07-22 2013-12-04 华中科技大学 网络视频和电视节目的在线查询和播放控制方法及系统
US20140137183A1 (en) * 2012-11-13 2014-05-15 Auckland Uniservices Ltd. Security system and method for the android operating system
CN104837159A (zh) * 2015-05-11 2015-08-12 上海交通大学 Android平台OAuth协议误用安全检测方法
CN105072133A (zh) * 2015-08-28 2015-11-18 北京金山安全软件有限公司 一种应用程序的登录方法及装置
CN105468462A (zh) * 2014-08-14 2016-04-06 腾讯科技(深圳)有限公司 进程间通信身份验证及应用软件间通信方法和系统
CN105897668A (zh) * 2015-10-22 2016-08-24 乐视致新电子科技(天津)有限公司 一种第三方账号授权方法、设备、服务器及其系统
CN107506124A (zh) * 2017-08-29 2017-12-22 武汉斗鱼网络科技有限公司 视频交友方法及系统

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140137183A1 (en) * 2012-11-13 2014-05-15 Auckland Uniservices Ltd. Security system and method for the android operating system
CN103428525A (zh) * 2013-07-22 2013-12-04 华中科技大学 网络视频和电视节目的在线查询和播放控制方法及系统
CN105468462A (zh) * 2014-08-14 2016-04-06 腾讯科技(深圳)有限公司 进程间通信身份验证及应用软件间通信方法和系统
CN104837159A (zh) * 2015-05-11 2015-08-12 上海交通大学 Android平台OAuth协议误用安全检测方法
CN105072133A (zh) * 2015-08-28 2015-11-18 北京金山安全软件有限公司 一种应用程序的登录方法及装置
CN105897668A (zh) * 2015-10-22 2016-08-24 乐视致新电子科技(天津)有限公司 一种第三方账号授权方法、设备、服务器及其系统
CN107506124A (zh) * 2017-08-29 2017-12-22 武汉斗鱼网络科技有限公司 视频交友方法及系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
董超等: "《 Android系统中第三方登录漏洞与解决方案》", 《计算机学报》 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111405016A (zh) * 2020-03-09 2020-07-10 广州华多网络科技有限公司 用户信息获取方法及相关设备
CN111405016B (zh) * 2020-03-09 2023-02-17 广州方硅信息技术有限公司 用户信息获取方法及相关设备
CN111538965A (zh) * 2020-04-15 2020-08-14 支付宝(杭州)信息技术有限公司 一种应用程序的授权登录方法、装置及系统
CN111538965B (zh) * 2020-04-15 2021-10-12 支付宝(杭州)信息技术有限公司 一种应用程序的授权登录方法、装置及系统

Also Published As

Publication number Publication date
CN108347471B (zh) 2021-07-23

Similar Documents

Publication Publication Date Title
US7330872B2 (en) Method for distributed program execution with web-based file-type association
US8533297B2 (en) Setting cookies in conjunction with phased delivery of structured documents
CN104158818B (zh) 一种单点登录方法及系统
CN102902805B (zh) 一种页面访问方法和装置
US20050015491A1 (en) Systems, methods, and articles of manufacture for dynamically providing web services
CN109104467A (zh) 开发环境构建方法、装置以及平台系统和存储介质
US20010047477A1 (en) Transparent user and session management for web applications
US20020161802A1 (en) Web presentation management system
US20030069923A1 (en) Method for distributed program execution with server-based file type association
EP2383650A1 (en) Methods for distributed program execution with file-type association in a client-server network
CN110602052A (zh) 微服务处理方法及服务器
JP2004303214A (ja) データベース変更通知を要求および受信するためのシステムおよび方法
US20030120727A1 (en) Method and system for file server direct connection
US9135297B2 (en) Database translation system and method
CN103379127A (zh) 服务器与客户端间的数据交互方法及装置
CN103475743B (zh) 一种用于云服务的方法、装置及系统
CN103997482B (zh) 桌面云业务中用户登录的方法、系统
Familiar et al. IoT and microservices
CN110830512A (zh) 一种基于域帐户多平台统一认证系统
CN108347471A (zh) 获取第三方用户信息的方法、装置及系统
CN110781676B (zh) 一种文本处理方法、装置、系统、电子设备及存储介质
CN109522501A (zh) 页面内容管理方法及其装置
US20070050482A1 (en) System and method for executing web pages using a multi-tiered distributed framework
US20060288212A1 (en) Transparent user and session management for web applications
CN104980511B (zh) 一种游戏数据访问方法、系统以及游戏网页服务器

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