基础知识

名词解释

帐号接入

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

帐号接出

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

账户接入的意义

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

百度相关账户接入协议和申请流程介绍

用户流程

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

将用户导向开放平台

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

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

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

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

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

用户回到第三方后流程

当用户回到第三方网站后,第三方网站可通过程序接口拿到该用户在百度的用户id、用户名,也就是说,第三方此时可知道这个用户的一个唯一标识。

而后,根据第三方网站自身的业务逻辑,可能有如下一些产品形态。

网站不使用自己的账号系统

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

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

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

明绑

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

暗绑

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

流程图

用户退出百度登录状态

当用户需要退出百度域的登录状态时(如切换百度登录账号),百度连接提供了oauth2.0的退出方式,用来方便用户退出百度域下的登录状态。通过

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

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

系统设计建议

架构设计

第三方网站在开发时,应将原有登录系统逻辑与数据分离,装作一个可仅凭用户id登录的接口。

整体系统设计的核心在于首先存储百度用户唯一标识和自身网站用户id的对应关系,而后每次用户产生登录行为时,第三方网站根据获取到的百度用户唯一标识取出对应的自身网站用户id,而后用这个用户id进行登录操作。

登录的统一流程抽象

根据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的设置等。

如果将原有账户系统按这个思路设计或改进,则可以方便的支持多家第三方接入,同时,网站自身登录功能扩展也可以较低成本完成。

百度媒体云-android接入教程,帮助文档首页/百度账号连接/百度账号接入指南 - 百度开放云平台...相关推荐

  1. android 如何将WPS文档转成PDF

    今天,简单讲讲android里如何将WPS文档转成PDF格式的文档. 这个其实也很简单 ,也和android的关系不大.大家如何不想看就不用继续看了.之前我一直在写文档,最后总是是完成的文档,但是领导 ...

  2. 利用java实现android项目结构API文档

    利用java实现android项目结构API文档 2012-11-16 快速生成API文档列表 在android项目中的.CLASSPATH文件里添加android.jar路径 例如: <cla ...

  3. Android APP开发需求文档范本

    Android  APP开发需求文档范本 软件需求文档格式的标准写法 1.引言 1.1 编写目的 • 阐明开发本软件的目的: 1.2 项目背景 • 标识待开发软件产品的名称.代码: • 列出本项目的任 ...

  4. Android加载PDF文档

    ​前言 最近项目上有一个需求,需要在Android端加载显示pdf文档,因为没有相关的经验,在刚接到需求的时候,第一想法就是打开程序员的第二大脑进行搜索,搜索结果还是蛮理想的,了解到了MuPDF,它支 ...

  5. python电玩城源码_2019最新最全价值2W的微信H5电玩城游戏全套源码+架设教程+配置文档...

    2019最新最全价值2W的微信H5电玩城游戏全套源码+架设教程+配置文档由小鱼H5游戏源码精心整理,并分享给大家.喜欢该资源的小伙伴请下载使用,注册.回复.每日签到.点赞送大量积分,满足您免费下载的愿 ...

  6. Android studio 生成JavaDoc文档

    Android studio 生成JavaDoc文档 1.Tools->Generate Javadoc 2.在other command line arguments项输入: -encodin ...

  7. ROS2机器人应用简明教程01文档

    学习ROS2机器人操作系统第一步要做什么呢?下载最新的官方文档到本地: 在github搜索ros2_documentation,使用git或者浏览器下载均可. 使用说明: 下载的文档需要编译才可使用, ...

  8. 百度文库免积分下载原格式文档的方法(利用百度文库漏洞)

    利用百度文库漏洞下载)百度文库免积分下载原格式文档的办法其实很简单. 1.首先在浏览器中找到想下载的文档,如 http://wenku.baidu.com/view/bd23fe3e0b4c2e3f5 ...

  9. 云发布的Docker部署文档

    云发布的Docker部署文档 文章目录 云发布的Docker部署文档 1.服务器安装 Docker 2.修改后端微服务的配置 2.1 修改 MySQL 的配置 2.2 修改 Redis 的配置 2.3 ...

  10. zeal刷新不出来_Zeal下载教程及文档加载失败解决方法

    Zeal下载教程及文档加载失败解决方法 一.前言: 本篇章主要关于windows系统的下载教程 二.正文: 1.进入官网链接下载相应的版本 官网:https://zealdocs.org/downlo ...

最新文章

  1. Socket,非阻塞,fcntl
  2. GIT常用命令--拉取提交
  3. 华为手机Android系统优缺点,第一次安卓机优缺点总结(对比iOS系统)
  4. java zoneoffset,java - 如何在java8中获取默认的ZoneOffset? - SO中文参考 - www.soinside.com...
  5. c语言 正号运算符 作用,C语言中,哪些运算符具有左结合性,哪些具有右结合性,帮忙总结下,...
  6. 移动端微信公众号开发中问题记录及解决方案
  7. torch7框架 深度学习(1)
  8. C++手写快读详解(快速读入数字)
  9. 基于arm-linux的防火墙设计,基于ARM9的Linux驱动开发及防火墙设计
  10. 引擎工具开发的一些总结
  11. 关于破解电信光猫实现内网穿透(端口转发,端口映射)
  12. 如何做好科研实验记录
  13. bt和wifi的共存
  14. RK3568 Android11从入门到实战项目专栏目录及介绍
  15. MarkDown显示各种好看的图案
  16. 网络安全基础——Linux基础
  17. HTML5期末大作业:音乐网站设计——html5在线音乐新闻发布会网站模板(滚动页) HTML+CSS+JavaScript
  18. Google Play通话记录和短信权限使用限制
  19. sed命令实现匹配行下一行的替换
  20. Android入门第30天-Android里的Toast的使用

热门文章

  1. 软件测试必备技能有哪些?
  2. 周伟焜称卸任CEO后更忙 愿做IBM中国同事师傅
  3. 光纤猫怎样连接无线路由器?_网络技术-i火吧
  4. 实时网速怎么看快慢_如何知道网络的实时网速?4种方法轻松查询
  5. 杨澜对话刘韵洁董明珠 :“穷得只有一个梦想”
  6. linux 连接打印机
  7. VSCode猜测字符编码
  8. 光衰高怎么办_发光顶角线使用起来方便吗?维护成本高吗?
  9. Aras innovator: 如何搜索指定长度的字符串
  10. BAT自动校对时间脚本,让WINDOWS系统自动校对时间