Skip to content

移动千里眼一键登录接入手册

一.准备工作

什么是授权登录:

  • 授权:客户授权给第三方应用,需要用户输入手机号以及验证码。
  • 登录: 从第三方应用直接跳转到移动千里眼,用户不用输入账号、密码。

授权登录有什么限制:

  • 授权登录的期限(refresh_token)有效期只有180天。
  • 每次调用接口刷新token后,必须保存接口返回的最新的refresh_token。
  • 从第三方应用跳转到移动千里眼,必须每次用授权后获取的refresh_token重新获取跳转地址。
  • 跳转地址使用后立即失效。

1.1 在开放平台门户上申请一键登录应用

  • 用户在 开放平台 注册账号 进入 控制台->授权登录应用
  • 进入 授权登录应用->视频能力 填写信息。

注意:一定要在“重定向地址栏里”填写正确的第三方平台对接地址。

  • 申请应用完成后待管理员审核,审核可能需要3-5个工作日。 待审核完成后,登录开放平台控制台,可看到审核完成的记录。

二.查看应用信息和调试工具

2.1 查看应用信息

点击应用详情和应用配置,可查看接入移动千里眼视频平台需要的appID,secret, RSA密钥等信息

2.2 调试工具

  • 点击调试按钮,跳转调试工具面板

  • 点击获取code按钮,弹出授权页面,输入移动千里眼账号验证码,拿到授权code

  • 测试的redirect-uri写入https://www.baidu.com?# 测试工具跳转到百度,在地址栏上复制网页地址可看到内容为:https://www.baidu.com/?state=unknown&code=783d3ecc526de225e29e00df598097c0# 可见授权码code就附在链接最后

  • 将获取到的code=783d3ecc526de225e29e00df598097c0贴入调试工具,点击获取token按钮 返回值当中就有刷新token,和跳转链接url。 使用url就可以直接一键登录进入移动千里眼前端页面

  • 若返回值中无url ,可继续点击获取访问链接按钮 最终得到的url 就可以直接一键登录移动千里眼前端页面

三.接入调试

3.1 第三方接入一键登录能力流程图

3.2 第三方平台获取授权码

注意:

  • 获取token相关接口无需遵循总体规范
  • 授权登录移动千里眼应用采用 OAuth 2.0 标准定义的方式来完成应用授权,目前仅支持 Authorization Code Grant 模式

第三方前端通过授权页链接获取授权码code

  • 获取授权页链接(authorization endpoint)

     https://open.andmu.cn/normal/oauth/authorize?response_type=code&client_id={appid}&redirect_uri={xxx}&state={xxx}
     redirect_uri 回调时携带的参数:
     - client_id :用信息里可查看到的应用Id
     - redirect_uri :申请应用时第三方填入的重定向地址
     - state :状态值,不能为空
  • 授权页验证通过后,物联网平台会将授权码code放入重定向地址中。第三方平台可通过重定向地址拿到授权码code

  • 第三方平台拿到授权码code后,可向物联网平台获取访问令牌和刷新令牌

注意:授权码code使用一次后即失效

3.3 第三方平台获取访问令牌(token)

  • 获取访问令牌接口
https://open.andmu.cn/normal/oauth/token

post 参数:post form-data请求体参数(content-type: application/x-www-form-urlencoded;charset=UTF-8)

  • grant_type : 授权类型,固定值 authorization_coderefresh_token
  • client_id : 应用ID,在应用信息里面查看
  • client_secret : 应用密码,在应用信息里面查看
  • redirect_uri : 重定向网址,获取code时传入的redirect_uri
  • code : 授权码,来源于通过redirect_uri回调时携带的code
  • refresh_token: 刷新 access_token, grant_type 为refresh_token必传

响应报文:

json
{
  "access_token": "xxx",
  "refresh_token": "yyy",
  "token_type": "bearer",
  "expires_in": 7200,
  "url": "https://qly.andmu.cn/normal/#/login?token={xxx}"
}

注意:刷新token(refresh_token)有效时长为半年。

提示:根据以上接口若返回值中有url地址, 则可以直接通过url访问移动千里眼web(仅能使用一次)。 若未拿到url,则根据access_token 通过下面的接口获取一键登录链接。

3.4 第三方平台获取一键登录链接

https://open.andmu.cn/normal/oauth/getLoginUrl

post 参数:post form-data请求体参数(content-type: application/x-www-form-urlencoded;charset=UTF-8)

  • access_token : 访问令牌

响应报文:

json
{
  "url": "https://qly.andmu.cn/normal/#/login?token={xxx}"
}

注意:访问令牌(access_token)有效时间为2小时。即返回的url登录成功后立即失效。

四.FAQ

Q:客户想从三方系统直接单点登录到移动千里眼,是否支持。
A:不支持,目前只支持授权登录的方式。

Q:为什么我调用接口提示APPID不存在。
A:出于安全考虑,接口的调用必须要进行签名,具体方式请参考:https://open.andmu.cn/doc/api/README.html#_1-消息头规范

Q:为什么我调用接口提示签名认证失败。
A:这种提示一般是签名有误,请参考文档:https://open.andmu.cn/doc/api/README.html#_3-响应码 ,建议采取以下的方式排查问题:
1、检测头部参数是否有误;
2、生成的签名字符串是否有误;
3、根据示例的参数,计算签名,判断签名函数是否有误。

Q:为什么我签名也对了,但是还是出现数据验证失败的错误。
A:这种提示一般是body参数有误,必须保证计算MD5的body数据与传输到服务器的body数据是一致的。

Q:授权登录的时候,输入了手机号和验证码,服务器返回的链接中是server_error。
A:1、检查redirect-uri是否与申请的时候一致。2、检查state参数是否为空,该参数不能为空。

Q:授权登录的时候,输入手机号码和验证码后,服务器返回的code在哪里了,只看到了一个页面。
A:页面会跳转到你设置的redirect-uri页面,在在地址栏上复制网页地址可看到内容为:https://....state=xxxxx&code=783d3ecc526de225e29e00df598097c0 可见授权码code就附在链接最后

Q:授权登录,为什么获取到code之后,使用该code无法获取token。
A:检查redirect-uri地址后面是不是有#等特殊符号。如果是去掉code=参数后的#等特殊符号。

Q:为什么我访问开放平台接口超时,访问其他地方没有问题。
A:检查机器是否被入侵,有可能进行了非法扫描被拉入了黑名单。

Q:授权登录的时候,用户授权后系统只返回了一个code授权码,怎么判断授权码是那个用户的呢?
A: 用户授权后,redirect_uri 回调时携带的参数是两个:code 、state;code是系统返回的授权码。state参数可以自行设置。

Q:授权登录获取访问令牌接口,为什么我的refresh_token使用一次过后再次调用就不行了。
A:该接口每次调用后,都会返回新的refresh_token,下次调用需要使用新的refresh_token。