개발자가 생성한 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

methodPUT
endpointapp-store-api.channel.io/general/v1/native/functions
notesApp Secret 을 이용해 token 을 교환합니다

Request

{
	"method": "issueToken",
	"params": {
		"secret": ""
		"channelId": ""
	}
}
fieldsnotesrequiredtype
secret(1) 에서 발급한 App secrettruestring
channelId특정 채널에 대한 토큰 발급 시 기입falsestring

channelId 를 명시하지 않을 경우: 앱의 기본 권한이 발급됩니다. 아래 권한이 포함됩니다

  • registerCommands - 앱에 커맨드를 등록하기 위한 기능입니다. Command 문서를 참고해주세요.

channelId 를 명시할 경우 : 채널에 대한 native function 이 필요한 경우 channelId 를 기입해야 합니다.

  • 해당 채널에 앱이 설치되어 있어야 합니다.
  • [인증 및 권한] 의 Channel 탭에서 기입한 native function 들에 대한 권한이 발급됩니다

Response

{
	"accessToken": "{access-token}",
	"refreshToken": "{refresh-token}",
	"expiresIn": 1800,
}
fieldsnotesrequiredtype
refreshTokenrefreshToken. 아래 api 참조truestring
accessTokenaccessToken, 아래 사용 방법 참조falsestring
expiresInexpire 되는 시간. second 단위trueint64

accessToken 에 발급된 토큰이 위치하며, refreshToken 의 사용은 아래를 참조해 주세요.



3.2 refreshToken

methodPUT
endpointapp-store-api.channel.io/general/v1/native/functions
notesrefreshToken 을 이용해 토큰을 재발급합니다

Request

{
	"method": "refreshToken",
	"params": {
		"refreshToken": "{refresh-token}"
	}
}
paramsnotes
refreshTokenissueToken 의 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": { ... }
}