> This page is for 플랫폼, version 레거시.
> For other versions, use one of these documentation indexes:
> - V4 (default): https://next.developer.frame.io/platform/v4/llms.txt
> - V4 실험적: https://next.developer.frame.io/platform/v4-experimental/llms.txt
> - 레거시: https://next.developer.frame.io/platform/v2/llms.txt

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://next.developer.frame.io/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://next.developer.frame.io/_mcp/server.

# 방법: 인증 관리(애플리케이션)

## 소개





이 가이드에서는 Frame.io에 대한 *C2C 애플리케이션* 인증 정보를 새로 고침, 해지, 저장하는 방법을 설명합니다.





## 무엇이 필요할까요?

[C2C 구현: 설정](/camera-to-cloud/implementing-c2c-setting-up) 가이드를 읽지 않으셨다면, 다음으로 넘어가기 전에 빠르게 살펴보세요! 저희 팀이 제공한 `client_id`와 [인증 및 권한 부여 가이드](/platform/v2/implementing-c2c-authentication-and-authorization-c2c-application)에서 사용했던 것과 동일한 `device_id`가 필요합니다. 이 가이드를 완료하려면 `access_token` 및 `refresh_token`도 필요합니다.

## 인증 토큰

[지난 가이드](/platform/v2/implementing-c2c-authentication-and-authorization-c2c-application)에서는 사용자가 프로젝트에서 디바이스를 인증하고 권한을 부여하도록 하여 새로운 인증 토큰을 *생성*하는 방법을 배웠습니다. *액세스 토큰은 만료되기 전까지 약 1시간 동안만 유효합니다*. 디바이스 사용자가 8시간마다 로그인하는 것을 원치 않으므로, 지난 가이드에서 `offline` 범위를 요청했고 Frame.io에서 인증할 때 *새로 고침 토큰*도 받았습니다. 새로 고침 토큰을 사용하면 현재 액세스 토큰이 만료되었을 때 새 액세스 토큰을 생성할 수 있습니다.

*새로 고침 토큰은 30일 동안 유효합니다*. access_token이 유효한 시간을 제한함으로써 토큰이 유출되었을 때 발생할 수 있는 잠재적 악용을 최소화합니다. *새로 고침 토큰*이 사용되기 전에 인증을 갱신하지 않으면 사용자가 다시 인증해야 합니다.





## 액세스 토큰 새로 고침





액세스 토큰이 필요한 API를 호출하고 다음과 같은 응답을 받는다면:





```json
{
    "code": 401,
    "errors": [
        {
            "code": 401,
            "detail": "You are not allowed to access that resource",
            "status": 401,
            "title": "Not Authorized"
        }
    ],
    "message": "Not Authorized"
}
```





… 액세스 토큰이 만료된 것입니다!





토큰을 새로 고치려면 다음 호출을 수행해야 합니다.





```shell
curl -X POST https://applications.frame.io/oauth2/token \
    --form 'client_id=[client_id]' \
    --form 'scope=offline device.connect asset.create' \
    --form 'grant_type=refresh_token' \
    --form 'refresh_token=[refresh_token]' \
    | python -m json.tool
```




<Info title="이 값들이 무엇인지 확실하지 않으신가요?">
  이 모든 값은 [이전 가이드](/platform/v2/implementing-c2c-authentication-and-authorization-c2c-application)에서 생성되었습니다. 아직 확인하지 않으셨다면 확인하신 후 다시 돌아오세요!
</Info>
 새로 고침 토큰만 사용하는 대신 이 모든 값을 사용함으로써, 유출된 새로 고침 토큰만으로 새로운 인증을 생성하는 것을 불가능하게 만듭니다. 누군가가 귀하의 통합인 것처럼 가장하여 토큰을 생성하려면 `refresh_token` *및* `client_id`가 모두 필요합니다.

다음과 같은 응답을 받아야 합니다.





```json
{
    "access_token": "[access_token]",
    "expires_in": 3599,
    "refresh_token": "[refresh_token]",
    "scope": "offline device.connect asset.create",
    "token_type": "bearer"
}
```





이것이 귀하의 새로운 인증 토큰입니다. *토큰을 새로 고치고 나면 이전 토큰은 더 이상 작동하지 않으므로* 이를 잘 보관해 두세요!





지금 이전 새로 고침 토큰을 사용하여 새로 고치려고 하면 다음과 같은 오류가 발생합니다.





```json
{
    "error": "token_inactive",
    "error_description": "Token is inactive because it is malformed, expired or otherwise invalid. Token validation failed."
}
```





토큰이 이미 새로 고쳐졌으므로 기존의 새로 고침 토큰을 사용하는 것은 유효하지 않습니다.




<Error title="새로 고침 중 401 오류 발생 시">
  토큰을 새로 고치는 동안 `401 Not Authorized` 응답을 받았다면, 토큰이 더 이상 유효하지 않으므로 인증 프로세스를 다시 시작해야 합니다.
</Error>


## 새로 고침 응답 누락





*새로 고침 토큰은 한 번만 사용할 수 있습니다*. 네트워크 오류나 예기치 않은 전원 재부팅으로 인해 토큰을 새로 고치기 위해 Frame.io에 호출을 보낸 후 응답을 놓치면 *전체 인증/권한 부여 흐름을 다시 시작해야 합니다.*





다소 번거로우시겠지만, 만일의 문제에 대비해 안전을 기하는 것이 좋습니다!





## 토큰 해지





경우에 따라 Frame.io에서 &quot;로그아웃&quot;하고 싶을 수 있습니다. 예를 들어, 사용자가 촬영을 완료한 후 더 이상 연결을 유지하고 싶지 않을 수 있습니다. 앱이 비정상적인 상태가 되어 초기화해야 하는 경우에도 인증을 취소하는 것이 좋습니다. 현재 인증을 폐기하고자 할 때마다 앱에서 인증 취소를 시도해야 합니다.





인증을 취소하려면 다음과 같이 호출합니다.




<Info title="재인증하기">
  이 호출을 수행한 후에는 [지난 가이드](/platform/v2/implementing-c2c-authentication-and-authorization-c2c-application)에 자세히 설명된 인증, 권한 부여 프로세스를 다시 시작해야 합니다.
</Info>


```shell
curl -X POST https://applications.frame.io/oauth2/revoke \
    --include \
    --form 'client_id=[client_id]' \
    --form 'token=[refresh_token]'
```

응답에는 페이로드가 포함되지 않습니다. 명령에 `--include`를 사용하여 반환된 헤더를 출력했으며, 호출에 성공했다면 `200` 상태 코드로 시작해야 합니다.

```text
HTTP/2 200
...
```

이제 토큰이 해지되었으므로 `access_token`이 필요한 [Frame.io](http://frame.io/)에 대한 모든 호출은 `Not Authorized`를 반환하며, 사용자가 Frame.io 연결을 다시 사용하려면 Frame.io에 다시 로그인하여 프로젝트에 다시 연결해야 합니다.

## 토큰 저장하기





전원 주기 간에도 기능을 유지하려면 인증 헤더를 스토리지에 보관해야 합니다. 이는 파일, 데이터베이스, 또는 자체 클라우드에서 수행할 수 있습니다. 다음은 인증 토큰 저장에 대한 몇 가지 지침입니다.

**사용자가 토큰을 보거나 액세스하지 못하도록 하세요**. 사용자가 자신의 토큰을 보거나 검색할 수 있어서는 절대 안 됩니다. 토큰은 귀하의 앱에서, 오직 앱에서만 단독으로 관리해야 합니다. **스토리지에 저장된 토큰을 암호화하세요.**`client_id`와 마찬가지로 액세스 토큰과 새로 고침 토큰은 키 도난을 방지하기 위해 가능하면 스토리지 보관 시 암호화해야 합니다. *인증 키는 평문으로 저장해서는 안 됩니다.* **인증 토큰을 client_id와 동일한 파일에 저장하지 마세요.**예제 Python 앱은 `client_id` 및 `device_id`를 인증 토큰과 동일한 파일에 저장합니다. 이는 데모용으로는 괜찮지만 프로덕션 코드에서는 권장되지 않습니다. `client_id` 및 `device_id`는 디바이스의 정적 값이며 *손실될 경우 디바이스 작동이 중지됩니다.* 인증 토큰은 정적이 아니며 디바이스 수명 주기 동안 여러 번 다시 기록되어야 합니다. 새 토큰으로 파일을 업데이트하는 동안 디바이스의 전원이 끊기면 해당 파일이 손상되어 `client_id`가 손실될 수 있으며, 이로 인해 디바이스가 Frame.io에서 *다시는* 재인증할 수 없게 됩니다. 토큰을 분리해 두면 최악의 경우라도 사용자가 Frame.io에 다시 로그인하기만 하면 됩니다.

토큰을 저장하기 가장 적합한 곳은 SQLite와 같이 검증된 데이터베이스이지만, 최소한 인증 데이터는 다른 값과 분리해야 합니다.





## 다음 단계





아직 문의하지 않으셨다면 저희 팀에 문의한 후 다음 가이드로 계속 진행하시기 바랍니다. 여러분의 연락을 기다리겠습니다!