首页 > 帮助文档首页 > 百度帐号连接 > 百度帐号接入指南

百度帐号接入指南

目录

基础知识

名词解释

  • 帐号接入

如B网站的访问者可使用A网站的帐号进行登录,则对于B网站来说,是帐号接入行为。

  • 帐号接出

如B网站的访问者可使用A网站的帐号进行登录,则对于A网站来说,是帐号接出行为。

帐号接入的意义

帐号连接功能是大多数开放平台都提供的服务。通过帐号连接功能,第三方网站不仅能够降低用户注册门槛,也能够让用户更快的与第三方平台上的用户分享网站内容,从而提升网站的访问量、网站信息的进一步传播与分享。

百度相关帐号接入协议和申请流程介绍

请参见 网站接入

用户流程

这里对一般的帐号接入流程进行简单介绍,供第三方开发者在和自己的网站结合时进行产品层面的参考。

将用户导向开放平台

第三方网站上展示一个“用百度帐号登录”的按钮,根据所采用技术方案(oAuth/Connect)的不同,可采取自行开发后端交互或使用我们JavaScript SDK的方式,如图所示。

1.png

用户在开放平台认证、授权的流程

当用户点击相关按钮后,将会被导向百度开放平台的相关页面,此时我们会根据用户的登录状态进行判断,如果用户未登录,我们会展示引导他登录的界面,直到一个有效的用户登录,如图。

2.png

当用户登录完毕后,如果当前登录的用户还未对您的应用授权,则会让用户授权,如图(授权页面仅在首次出现)。

3.png

用户点击允许后,将跳回第三方网站。

用户回到第三方后流程

当用户回到第三方网站后,第三方网站可通过程序接口拿到该用户在百度的用户id、用户名,也就是说,第三方此时可知道这个用户的一个唯一标识。 而后,根据第三方网站自身的业务逻辑,可能有如下一些产品形态。

  • 网站不使用自己的帐号系统

如果第三方网站不使用自己的帐号系统,那么此时第三方网站可根据所拿到的用户唯一标识,为该用户生成一个session,并自己维持此会话状态即可,不需要有特别的界面展示。

  • 网站要将外部帐号引入自身帐号系统

如果网站使用自己的帐号系统,那么实际上是将一个百度的用户和一个第三方网站的用户建立并维护关联关系,当发生百度用户登录后,实际将其转变为自身站点用户登录,而该关联关系的建立,通常存在显式要求用户绑定(明绑)或自动为用户绑定(暗绑)两种方式,第三方可根据自己的需要选择。

  • 明绑

明绑是目前一般应用的情况,第三方网站在获取用户在百度的唯一标识后,可要求用户登录到一个原有第三方网站的帐号(此时也可要求用户注册),然后执行绑定操作。

  • 暗绑

在某些产品形态下,也可以考虑采用暗绑的方式,第三方网站根据在百度开放平台接口所取到的信息,自动的在第三方网站的数据库中生成一个用户,并建立绑定关系,在这个过程中,用户不会看到任何界面。

流程图

4.png

用户退出百度登录状态

当用户需要退出百度域的登录状态时(如切换百度登录帐号),百度连接提供了oauth2.0的退出方式,用来方便用户退出百度域下的登录状态。通过浏览器重定向到如下地址:https://openapi.baidu.com/connect/2.0/logout?access_token=xxx&next=xxx, next是回调地址,用户退出后重定向的地址。

注意:退出时会判断来源地址是否与该应用注册的站点地址相同域或者与根域名列表中有相同的域,要不就会报错。

该接口是给前端调用,切记无法server 对 server通信

系统设计建议

架构设计

第三方网站在开发时,应将原有登录系统逻辑与数据分离,装作一个可仅凭用户id登录的接口。 整体系统设计的核心在于首先存储百度用户唯一标识和自身网站用户id的对应关系,而后每次用户产生登录行为时,第三方网站根据获取到的百度用户唯一标识取出对应的自身网站用户id,而后用这个用户id进行登录操作。

登录的统一流程抽象

1.jpg

  • 根据OAuth2.0接口所要求的参数(参考站外Web应用(第三方连接网站)的授权验证方法),获得用户授权url,并将用户跳转至该url。
  • 用户在百度开放平台对应用进行授权,而后跳转回redirect_uri所指定的页面,并携带code参数。
  • 凭code参数调用OAuth2.0相关接口,请求access_token,百度oAuth此步骤会返回用户id以及用户名,如其他开放平台未返回,则可以通过调用其OpenAPI接口,获得用户id。如使用connect,则获取用户Cookies中的相关信息并校验。
  • 判断用户是否已绑定,根据所获得的百度用户id,到自身绑定关系维护的后端存储系统(如MySQL)中查询。
  • 如果用户已绑定,则可根据所查到的自身网站的用户id,为用户执行登录操作。
  • 如果用户未绑定,此时应为其展现绑定界面,如绑定界面允许用户注册,那么这里可以先调用OpenAPI获得用户的一些信息,如用户id、用户名、邮箱(特权接口)等,为用户预填到注册表单中。
  • 为用户执行绑定,此时根据当前登录的用户id和对应获得的百度用户id,在后端存储系统(如MySQL)中插入绑定关系。
  • 此处需要为用户做“登录”操作,因为实际上当前用户已登录,这一步的操作可能仅仅是设置某些用户的特殊session,如标识用户登录的来源网站为baidu。
  • 一些额外的操作,这里是指可以将之前所获得的用户access_token和access_token_secret存储到自身网站的后端存储系统中,以方便后续网站调用开放平台的OpenAPI使用。

需要考虑的问题

与自身帐号系统如何对接

在评估接入一个外部开放平台帐号的成本时,网站本身的帐号系统设计是一个重要因素,这里我推荐在设计网站本身帐号系统时,应该将鉴权操作和其余操作分离。 其中,鉴权操作实际上就是让用户提供一个凭据,网站方进行凭据验证的过程,其输入是身份凭据,输出是用户id。身份凭据可能是用户名+密码、Email+密码等,在此就是开放平台所返回的用户唯一标识。 而其余操作通常是Session/Cookie的设置等。 如果将原有帐号系统按这个思路设计或改进,则可以方便的支持多家第三方接入,同时,网站自身登录功能扩展也可以较低成本完成。