OAuth 授权协议

数据对接首要离不开授权,需要双方建立可信的数据交换通道。目前希悦统一采用 OAuth 授权协议,对接方通过希悦提供的 OAuth clientId 和 clientSecret 访问相应数据。如果还没有自己的 clientId 和 clientSecret,可以向希悦的工作人员索要。clientId 和 clientSecret 非常重要,需要稳妥保管。

OAuth 授权

为了调用希悦提供接口,需要首先获得授权,希悦校园目前支持 OAuth 中 client_credentials 的授权方式。使用的API为:

POST https://open.seiue.com/api/v1/oauth

curl 示例如下:

curl 'https://open.seiue.com/api/v1/oauth' \
-X POST  \
-H 'Content-Type: application/json' \
-d '
{
        "grant_type": "client_credentials",
        "client_id": "your client id",
        "client_secret": "your secret"
}
'

该 API 以 json 的格式返回如下形式的数据:

{
  "token_type":"Bearer",
  "expires_in":86400,
  "access_token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6ImVlOGE1OWEzYmQ4MmU1NzU0N2RhZDc1MmU4MmRlZGQxMGQ2MTE3N2RjMDVjYjYzZjUzYTcyMjM1N2Y3YjM2MDRlM2MwNGJhMGIwMWYzZTEyIn0.eyJhdWQiOiIyIiwianRpIjoiZWU4YTU5YTNiZDgyZTU3NTQ3ZGFkNzUyZTgyZGVkZDEwZDYxMTc3ZGMwNWNiNjNmNTNhNzIyMzU3ZjdiMzYwNGUzYzA0YmEwYjAxZjNlMTIiLCJpYXQiOjE0ODYwMzk3MDIsIm5iZiI6MTQ4NjAzOTcwMiwiZXhwIjoxNDg2MTI2MTAyLCJzdWIiOiIyIiwic2NvcGVzIjpbXX0.XC4GVqFLa6hLjK9Rp73hS2RBfInVR1zqFND7MNVS66nFjqi034yX-IUpUJgiCpFW0UnLbS4BDNDic3TGaaX_MOxXiW9lGNNg5GOuj54H7vigbSsOTNsAhzzGYqWlvMvz-VJAcG43H2AbL3dQN2XpT7XGphYLp8YkgXTFoghF0SM"
}

其中 token_type 是 OAuth Token 的类型,expires_in 是该 Token 有效的时间,单位为秒,access_token 为实际Token内容。

在调用其他需要授权的API是需要将 token_type 和 access_token 拼接在一起并放在 Http 的 Authorization Header 中:

Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6ImVlOGE1OWEzYmQ4MmU1NzU0N2RhZDc1MmU4MmRlZGQxMGQ2MTE3N2RjMDVjYjYzZjUzYTcyMjM1N2Y3YjM2MDRlM2MwNGJhMGIwMWYzZTEyIn0.eyJhdWQiOiIyIiwianRpIjoiZWU4YTU5YTNiZDgyZTU3NTQ3ZGFkNzUyZTgyZGVkZDEwZDYxMTc3ZGMwNWNiNjNmNTNhNzIyMzU3ZjdiMzYwNGUzYzA0YmEwYjAxZjNlMTIiLCJpYXQiOjE0ODYwMzk3MDIsIm5iZiI6MTQ4NjAzOTcwMiwiZXhwIjoxNDg2MTI2MTAyLCJzdWIiOiIyIiwic2NvcGVzIjpbXX0.XC4GVqFLa6hLjK9Rp73hS2RBfInVR1zqFND7MNVS66nFjqi034yX-IUpUJgiCpFW0UnLbS4BDNDic3TGaaX_MOxXiW9lGNNg5GOuj54H7vigbSsOTNsAhzzGYqWlvMvz-VJAcG43H2AbL3dQN2XpT7XGphYLp8YkgXTFoghF0SM

除了授权相关 API,所有的接口都需要指定学校访问数据,我们通过 X-School-Id HTTP 头来传递当前学校ID,一个调用 API 完整的例子如下:

curl 'http://open.seiue.com/api/v1/classes' \
-H 'X-School-Id: 51' \
-H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjljYTkyZjQxMGY1YjRkZjJkYjA3YTRiYjIwZGU4NzQyYTk0NTUzZjVkYzY2MmNkZjY2NzA2N2YyMzBkZjA4NjA1OGM3ZmZiZTliZGZlYWEwIn0.eyJhdWQiOiIzNjg5MTIiLCJqdGkiOiI5Y2E5MmY0MTBmNWI0ZGYyZGIwN2E0YmIyMGRlODc0MmE5NDU1M2Y1ZGM2NjJjZGY2NjcwNjdmMjMwZGYwODYwNThjN2ZmYmU5YmRmZWFhMCIsImlhdCI6MTUyNTY2MzAxNCwibmJmIjoxNTI1NjYzMDE0LCJleHAiOjE1MjU3NDk0MTQsInN1YiI6IjM2ODkxMiIsInNjb3BlcyI6W119.T7LxcFm65NoYoHXRarT856fWE3hVHWuNY1WQ0XvcHC0E_kS2k-BBFJ0bdV_GnL4yZPr3uUfR5oeZozEVinEFoTJud25NKjREXe-ETKvrqwEw6GnEkyY_ymxHlIl7GtLvvfBKwTqxvt69i8KeVztAaVNb_C9lmGJ5R8BZgsYpThY'

results matching ""

    No results matching ""