개발자가 생성한 App
에서 채널톡 API 를 사용하기 위해서는 토큰을 발급받아야 합니다.
먼저 개발자 페이지의 [앱 설정]
- [인증 및 권한 탭]
에서부터 아래 과정을 따라해주세요.
1. App Secret 발급
토큰 발급을 위해서는 App Secret
을 먼저 발급받아야 합니다. 앱 설정 페이지 상단의 발급하기 버튼을 눌러 시크릿을 발급할 수 있습니다. 해당 시크릿은 외부에 노출되지 않도록 주의해 주세요. 토큰을 재발급하는 경우 이전에 발급된 토큰은 비활성화됩니다.
2. App 의 권한 등록
Channel
, User
, Manager
섹션에서 개발자가 사용할 함수를 체크하여 고른 뒤 저장해야 합니다. 각각의 함수에 대한 설명은 여기를 참조해 주세요.
User
, Manager
섹션에 등록한 권한은 WAM 에 전달되는 토큰에 포함되게 됩니다.
Channel
섹션에 등록한 권한은 아래 (3) 과정을 통해 토큰으로 발급받을 수 있습니다.
3. Native function 을 이용해 토큰 교환
App Secret
을 발급받았다면 아래와 같은 요청을 통해 토큰을 교환할 수 있습니다. issueToken
/ refreshToken
을 포함한 토큰 API 에는 10 tokens / 30 minute , Fixed window 로 rate-limit 이 적용되어 있습니다. rate-limit 을 초과하는 경우 토큰 발급이 거절될 수 있다는 점에 유의해 주세요.
3.1 issueToken
method | PUT |
---|---|
endpoint | app-store-api.channel.io/general/v1/native/functions |
notes | App Secret 을 이용해 token 을 교환합니다 |
Request
{
"method": "issueToken",
"params": {
"secret": ""
"channelId": ""
}
}
fields | notes | required | type |
---|---|---|---|
secret | (1) 에서 발급한 App secret | true | string |
channelId | 특정 채널에 대한 토큰 발급 시 기입 | false | string |
channelId
를 명시하지 않을 경우: 앱의 기본 권한이 발급됩니다. 아래 권한이 포함됩니다
- registerCommands - 앱에 커맨드를 등록하기 위한 기능입니다. Command 문서를 참고해주세요.
channelId
를 명시할 경우 : 채널에 대한 native function 이 필요한 경우 channelId 를 기입해야 합니다.
- 해당 채널에 앱이 설치되어 있어야 합니다.
- [인증 및 권한] 의
Channel
탭에서 기입한 native function 들에 대한 권한이 발급됩니다
{
"accessToken": "{access-token}",
"refreshToken": "{refresh-token}",
"expiresIn": 1800,
}
fields | notes | required | type |
---|---|---|---|
refreshToken | refreshToken. 아래 api 참조 | true | string |
accessToken | accessToken, 아래 사용 방법 참조 | false | string |
expiresIn | expire 되는 시간. second 단위 | true | int64 |
accessToken
에 발급된 토큰이 위치하며, refreshToken
의 사용은 아래를 참조해 주세요.
3.2 refreshToken
method | PUT |
---|---|
endpoint | app-store-api.channel.io/general/v1/native/functions |
notes | refreshToken 을 이용해 토큰을 재발급합니다 |
Request
{
"method": "refreshToken",
"params": {
"refreshToken": "{refresh-token}"
}
}
params | notes |
---|---|
refreshToken | issueToken 의 response 로 발급받은 refreshToken |
Response
PUT app-store-api.channel.io/general/v1/native/fucntions
x-access-token: "{token}"
...
{
"method": "writeUserChatMessage"
"params": { ... }
}
4. 교환된 토큰의 사용
발급된 jwt 토큰은 **x-access-token
** HTTP 헤더에 기입하여 Native Function
또는 Function
을 호출하는 데에 사용될 수 있습니다.
Function
호출에 x-access-token 을 사용하는 예)
PUT app-store-api.channel.io/general/v1/native/fucntions
x-access-token: "{token}"
...
{
"method": "writeUserChatMessage"
"params": { ... }
}