# 服务商授权

# 概述

服务商授权是为服务商的后端直接对接学加家开放平台而不需要进行前端的授权流程而提供的一个rest接口。 服务商授权成功以后,服务商后端就获取到了调用开放平台openapi的accesstoken。

# 服务商后端获取accessToken

# 请求路径

https://auth.xuejj.com/oauth/token

# 请求方式

POST

# 请求header
字段名称 字段值 字段表述 是否必填
Authorization 值=Basic + 空格 + base64(appId:appSecret)
Content-Type application/x-www-form-urlencoded 固定值
User-Type op-partner-backend 固定值

Authorization的value由三部分组成:1.Basic, 2.空格,3.base64编码后的(appId:appSecret)

计算base64值的java代码如下:

byte[] toBytes = ("yourAppId" + ":" + "yourAppSecret").getBytes();
//appId使用base64的编码规则
String encoded = Base64.getEncoder().encodeToString(toBytes);
//这里就是Authorization的value,把三部分的字符串拼接起来
String headerValue = "Basic" + " " + encoded;
  • 注意:appId与appSecret只是生成Authorization,不需要写入header
字段名称 字段值 字段表述 是否必填
appId 为isv分配的appId
appSecret 为isv生成的appSecret
# 请求Body

body使用表单方式提交,字段为

字段名称 字段值 描述 是否必填
grant_type password 这里的值为固定值password
username 为isv分配的用户名
password 为isv分配的密码
schoolId 为哪个school授权,schoolId通过appInstall事件获取
# 返回示例
{
	"access_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzY2hvb2xfaWQiOjExMDEwMTAwMDEsInVzZXJfaWQiOjE2MjQwMywiZXh0ZXJuYWxfdXNlcl9ubyI6IjE2MjQwMyIsInBob25lIjoiMTg3MTE1MDU5NDAiLCJ1c2VyX25hbWUiOiJzZXJ2aWNlQHRjaGVuZWR1LmNuIiwic2NvcGUiOlsiYWxsIl0sInNhYXNfdG9rZW4iOiJlOTU4Zjc4OC05Yjc3LTQxMzUtYjgzMy00ODViY2YyNmNiYmMiLCJleHAiOjE2MDczMzUwMjEsInN5c3RlbV9zb3VyY2UiOiJvcC1wYXJ0bmVyLWJhY2tlbmQiLCJhdXRob3JpdGllcyI6WyJvcGVuYXBpIl0sImp0aSI6IjFkYjQ5NTUyLTM1MzktNDU1NS05ZDlkLTJkZDk3Y2IwMzUzYiIsImNsaWVudF9pZCI6InJveWRvR0ZUd1k5WlJsYVoifQ.nwycr8f27j2yGwbM1ogihNPiavt6wsQ-83IjfK8Ba87yuf1uPjT_9jQYQbqBHXnsbAVxUyabHpTr5HNePg5vlfXai1UlGSRY9X_-cKen328OaxGtSUtmfDIU4_c075zB09blsgTyQ-88CFSQFhCerUBMElavA172m8bKXtjZywQEGXCgRWW4jS90Gqk52FHaoEMOvP1kRCombZWLyB2vw8Ol0yEq_QtW5C31cuhCPqv6Wpn3TiBgQUUR7zk-qYIqTAcIwLhplftwVes5A27ndwcAHvvK_Fhxrozn1KIqcWlIB1COjL5VZNLHIXEEICwNnxScNRgGOFDB0mtsYK3xIw",
	"token_type": "bearer",
	"refresh_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX25hbWUiOiJzZXJ2aWNlQHRjaGVuZWR1LmNuIiwic2Fhc190b2tlbiI6ImU5NThmNzg4LTliNzctNDEzNS1iODMzLTQ4NWJjZjI2Y2JiYyIsImF1dGhvcml0aWVzIjpbIm9wZW5hcGkiXSwiY2xpZW50X2lkIjoicm95ZG9HRlR3WTlaUmxhWiIsInNjaG9vbF9pZCI6MTEwMTAxMDAwMSwidXNlcl9pZCI6MTYyNDAzLCJleHRlcm5hbF91c2VyX25vIjoiMTYyNDAzIiwicGhvbmUiOiIxODcxMTUwNTk0MCIsInNjb3BlIjpbImFsbCJdLCJhdGkiOiIxZGI0OTU1Mi0zNTM5LTQ1NTUtOWQ5ZC0yZGQ5N2NiMDM1M2IiLCJleHAiOjE2MDczOTE5MDEsInN5c3RlbV9zb3VyY2UiOiJvcC1wYXJ0bmVyLWJhY2tlbmQiLCJqdGkiOiIyNTU4ZmRkNS1jYzM2LTRiZDktYWU0Ni03NzZkZGE2OTU4YWQifQ.o44025MbJvzdy4Dm40yKlXIO7Mb1XZw-XS3xKr5dLVNlrcuPzUXBK4VqV6PK1Tm5hDAkWSgdkEcfOPrRp4C6mN92PF9ZCfcWQWxxOa6BfVZB2ZVV1siyHi4P7mR-HnR38WY8xrHjHac3h51e0TJp4-lt1RgMdLSWMYRCdqoJ4Aa4OYhoJmkxrQdORAigQY2Krm2iwUek2hlOnGtcCkllzXK-rDOxr0bpyLSz6Zd8GKDj29Btd_KDIerxITRaX9U5BSmmizOhUgL6q1OL6JcHcolND0N1HfkysOyLY3iFF-jL9Y5FkLLu7kG4mqlshwlXvxYHU-s1irq_FEZ24Bvpxg",
	"expires_in": 3599,
	"scope": "all",
	"school_id": 1101010001,
	"user_id": 162403,
	"external_user_no": "162403",
	"phone": "18711505940",
	"system_source": "op-partner-backend",
	"client_id": "roydoGFTwY9ZRlaZ",
	"jti": "1db49552-3539-4555-9d9d-2dd97cb0353b"
}

Last Updated: 12/7/2020, 7:15:24 PM