私有应用授权
私有应用,是在站点后台的“企业服务”-> “新增私有应用”创建,获取授权后,仅能用于操作当前站点的数据。
要开发私有应用,开发者只需获取私有应用的 App Key 和 App Secret 即可。
私有应用的 OAuth2 授权过程,参照 Client Credentials 。
授权流程示例如下:
在友好速搭的 OAuth2 实现中,上图的组成部分实现如下:
- Client:私有应用
- Authorization Server:地址是
https://apps.youhaosuda.com/oauth2/
与开放应用授权不同,私有应用无需用户确认,获取 access token 仅需一步:
POST https://apps.youhaosuda.com/oauth2/token
请求需包含如下参数:
grant_type
:必须,form-data 参数(application/x-www-form-urlencoded),值必须为client_credentials
Authorization
:必须,HTTP 请求头参数,包含应用凭证信息,生成方法: 将私有应用的凭证,包括 App Key 和 App Secret,使用:
连接成字符串:key:secret
,使用 Base64(RFC 4648),将字符串编码。编码后的字符串,放在Basic
及空格后面,组成新的字符串,作为请求头参数Authorization
的值。Ruby 代码示例:require 'base64' app_key = 'a94a110d86d2452eb3e2af4cfb8a3828' app_secret = 'a84a110d86d2452eb3e2af4cfb8a3828' # 使用遵循 RFC 4648 的 Base64 编码函数 encoded = Base64.urlsafe_encode64("#{app_key}:#{app_secret}") basic = "Basic #{encoded}" #输出为:Basic YTk0YTExMGQ4NmQyNDUyZWIzZTJhZjRjZmI4YTM4Mjg6YTg0YTExMGQ4NmQyNDUyZWIzZTJhZjRjZmI4YTM4Mjg= puts basic
若请求合法,服务器将返回应用操作 API 的 access token:
{
"token": "f85632530bf277ec9ac6f649fc327f17"
}
这个 access token 不会过期,应用需要持久存储这个值,并确保不会泄露。
如果要更新 access token,可以删除应用,重新创建,用新的 App Key 和 App Secret,获取新的 access token。
使用 access token 访问API:https://api.youhaosuda.com/v1/...
,在请求 API 的头部加入X-API-ACCESS-TOKEN
参数,值为 access token。
私有应用的 access token 默认拥有 API 所有权限。
当从站点后台,点击私有应用的链接,跳转进入私有应用时,友好速搭会在跳转请求参数中,加入hmac
和time_stamp
参数,其中hmac
的计算方法,参照跳转请求安全验证。
私有应用可通过验证hmac
来确认请求是否来自友好速搭,并配合time_stamp
的时间间隔判断,实现跳转请求自动登录。
获取授权时发生错误,参见 OAuth2 错误码。 使用 API 发生错误时,请参见 API 错误码。