aligenie oauth php,AliGenie

1.概述

采用通用的 OAuth2.0 开放授权协议,可以让 AliGenie 在不获取合作方用户名和密码的前提下,访问用户授权的资源,协议规范可以访问 OAuth2.0 官方网站:https://oauth.net/2/

PS:家居技能及自定义技能 Oauth2.0 需要配置的项含义一致,不区分家居和自定义技能

2.鉴权流程

(1)AliGenie 在开发商开放平台或者其他第三方平台注册一个应用,获取到相应的 Client id 和 Client secret

(2)AliGenie 应用向开发商 OAuth2.0 服务发起一个授权请求

(3)开发商 OAuth2.0 服务向用户展示一个授权页面,用户可进行登陆授权

(4)用户授权 AliGenie 客户端应用后,进行回跳到 AliGenie 的回调地址上并带上 code 相关参数

(5)AilGenie 回调地址上根据code会去合作方 Oauth 的服务上换取 access_token

(6)通过 access_token,天猫精灵设备控制时通过该 access_token 进行访问合作方的服务

3.运行流程

OAuth 2.0 的运行流程如下图

44ae96228dfa6ea6086c5e51752fc8c5.png

(A)用户打开客户端以后,客户端要求用户给予授权。

(B)用户同意给予客户端授权。

(C)客户端使用上一步获得的授权,向认证服务器申请令牌。

(D)认证服务器对客户端进行认证以后,确认无误,同意发放令牌。

(E)客户端使用令牌,向资源服务器申请获取资源。

(F)资源服务器确认令牌无误,同意向客户端开放资源。

4.AliGenie 智能应用平台 oauth 基础配置

1dfe65476b85249738af1a7c400d5366.png

PS:服务配置中请使用安全套接字层超文本传输协议 HTTPS 并且已经授信

5.请求 API

(A) 用户打开授权链接进行授权

例:https://xxx.com/auth/authorize?redirect_uri=https%3A%2F%2Fopen.bot.tmall.com%2Foauth%2Fcallback%3FskillId%3D11111111%26token%3DXXXXXXXXXX&client_id=XXXXXXXXX&response_type=code&state=111

参数说明:

redirect_uri:  AliGenie 平台的回调地址,该地址会加上 AliGenie 的参数进行 urlEncode,所以合作方务必做好参数返回的兼容性

client_id: 在合作方上注册的应用 Id

response_type: 响应方式为 code

state: 表示客户端的当前状态,可以指定任意值,认证服务器会原封不动地返回这个值。

注:示例中的链接 API (https://xxx.com/auth/authorize) 为开放平台中的账户授权链接字段。

(B) 通过 code 换取合作方访问令牌

例:

请求方法: POST

参数说明:

client_id: 在合厂商平台上注册的应用 Id

grant_type: 授权类型  authorization_code

client_secret: 在厂商平台上注册应用的 secret

code: 授权登陆后回调 AliGenie 的地址返回的 code

redirect_uri: AliGenie 回调地址

注:示例中的链接 API  (https://XXXXX/token) 为开放平台中的 Access Token Url 字段。2018年1月4日之后,创建的技能通过 body 来传参。

通过 code 换取 access_token 响应结构如下(响应格式 application/json):

字段类型解释说明access_tokenString访问token(响应正确时必传递)

refresh_tokenString进行刷新access_token的刷新token (响应正确时必传递)

expires_inlong过期时间时长(响应正确时必传递)

errorString错误响应码  (响应错误时必传递)

error_descriptionString错误详情 (响应错误时必传递)

正常响应:

{"access_token": "XXXXXX","refresh_token": "XXXXXX","expires_in":17600000}

错误响应:

{"error":"errorCode","error_description":"description"}

注: access_token 有效期请设置成 1 天以上(2-3天最佳)

(C) 通过 refresh_token 刷新 access_token(该功能已上线,请确保厂商自己的刷新功能是完善的)

例:

请求方法: POST参数说明:grant_type:更新access_token的授权方式为refresh_tokenclient_id: 在厂商平台上注册的应用Idclient_secret:在厂商平台上注册应用的secretrefresh_token: 上一次授权获取的refresh_token注:示例中的链接API( https://XXXXX/token) 为开放平台中的Access Token Url 字段。

更新 access_token 响应结构如下(响应格式 application/json):

字段类型解释说明access_tokenString访问token(响应正确时必传递)

refresh_tokenString进行刷新access_token的刷新token (响应正确时必传递)

expires_inlong过期时间时长(响应正确时必传递)

errorString错误响应码  (响应错误时必传递)

error_descriptionString错误详情 (响应错误时必传递)

正常响应:

{"access_token": "XXXXXX","refresh_token": "XXXXXX","expires_in":17600000}

错误响应:

{"error":"errorCode","error_description":"description"}

注意事项:

获取 access_token 或者刷新 access_token 出现错误情况时 http response status code 请返回 200 ,接入方的内部异常请接入方自行包装异常信息

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值