개발자가 생성한 App 에서 채널톡 API 를 사용하기 위해서는 토큰을 발급받아야 합니다.

먼저 개발자 페이지의 [앱 설정] - [인증 및 권한 탭] 에서부터 아래 과정을 따라해주세요.


1. App Secret 발급


토큰 발급을 위해서는 App Secret 을 먼저 발급받아야 합니다. 앱 설정 페이지 상단의 발급하기 버튼을 눌러 시크릿을 발급할 수 있습니다. 해당 시크릿은 외부에 노출되지 않도록 주의해 주세요. 토큰을 재발급하는 경우 이전에 발급된 토큰은 비활성화됩니다.



2. App 의 권한 등록


Channel, User, Manager 섹션에서 개발자가 사용할 함수를 체크하여 고른 뒤 저장해야 합니다. 각각의 함수에 대한 설명은 여기를 참조해 주세요.


User, Manager 섹션에 등록한 권한은 WAM 에 전달되는 토큰에 포함되게 됩니다.


Channel 섹션에 등록한 권한은 아래 (3) 과정을 통해 토큰으로 발급받을 수 있습니다.



3. Native function 을 이용해 토큰 교환


App Secret 을 발급받았다면 아래와 같은 요청을 통해 토큰을 교환할 수 있습니다


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 를 명시하지 않을 경우 앱의 기본 토큰이 발급됩니다.

    아래와 같은 Native Function 에 대한 권한이 포함됩니다.

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

      channelId 를 명시할 경우 인증 및 권한의 Channel Permissions 에서 요청한 권한을 포함해 토큰을 발급할 수 있습니다. 이 경우, 해당 채널에ㅍ 앱이 설치되어 있어야 합니다.

  • Response

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

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


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. 교환된 토큰의 사용


You can use jwt tokens on **x-access-token http **header when using Native Functions or Functions .


Example using x-access-token on Function calling)

PUT app-store-api.channel.io/general/v1/native/fucntions
x-access-token: "{token}"
...

{
	"method": "writeUserChatMessage"
	"params": { ... }
}