테스트 목적으로 단기간에 새로 고침 토큰을 여러 번 사용했는데 Google 새로 고침 토큰이 만료되는지 궁금합니다. 동일한 새로 고침 토큰을 사용하여 장기간 (1 주 또는 심지어 몇 달) 동안 다른 액세스 토큰을 반복해서 얻을 수 있습니까?
테스트 목적으로 단기간에 새로 고침 토큰을 여러 번 사용했는데 Google 새로 고침 토큰이 만료되는지 궁금합니다. 동일한 새로 고침 토큰을 사용하여 장기간 (1 주 또는 심지어 몇 달) 동안 다른 액세스 토큰을 반복해서 얻을 수 있습니까?
답변:
Google Auth 서버에서 발행 한 새로 고침 토큰은 만료되지 않습니다. 이것이 새로 고침 토큰의 요점입니다. 사용자가 애플리케이션에 대한 액세스를 취소하면 새로 고침 토큰이 만료됩니다 (또는 권한이 없음).
이 문서를 참조하면 새로 고침 토큰의 기능을 명확하게 설명합니다.
오래 지속되는 토큰 (일반적으로 1 년 또는 무제한 수명 동안 유효)을 발행하는 대신 서버는 수명이 짧은 액세스 토큰과 수명이 긴 새로 고침 토큰을 발행 할 수 있습니다. 즉, 액세스 권한을 부여한 사용자가 애플리케이션에 대한 액세스를 취소 할 때까지 새로 고침 토큰을 반복해서 사용할 수 있습니다.
이것은 매우 혼란스러운 스레드입니다. 첫 번째 대답은 옳은 것처럼 보이지만 실제로 Google의 권위있는 내용을 인용하지는 않습니다.
내가 찾은 가장 확실한 답은 실제로 토큰을 얻는 개발자의 놀이터입니다. 2 단계 하단에는 다음과 같은 메모가 있습니다.
"참고 : OAuth Playground는 새로 고침 토큰을 저장하지 않지만 새로 고침 토큰은 만료되지 않으므로 수동으로 취소하려면 Google 계정 승인 액세스 페이지로 이동해야합니다."
나는 그것이 완전히 사실이라고 생각하지 않습니다.
발급 될 새로 고침 토큰 수에는 제한이 있습니다. 클라이언트 / 사용자 조합 당 한도, 모든 클라이언트의 사용자 당 한도입니다. 새로 고침 토큰을 장기 저장소에 저장하고 유효한 상태로 유지되는 한 계속 사용해야합니다. 애플리케이션에서 너무 많은 새로 고침 토큰을 요청하면 이러한 제한에 도달 할 수 있으며,이 경우 이전 새로 고침 토큰이 작동을 중지합니다.
이 페이지에서 : https://developers.google.com/youtube/v3/guides/authentication#installed-apps
그것은 youTube 문서 (다른 API 문서보다 훨씬 낫다는 것을 알았습니다)에서 온 것이지만 모든 Google 앱에서 동일하다고 생각합니다.
이것 좀 봐:
새로 고침 토큰은 사용자가 액세스를 취소 할 때까지 유효합니다. 이 필드는 access_type = offline이 인증 코드 요청에 포함 된 경우에만 존재합니다.
에서 https://developers.google.com/accounts/docs/OAuth2WebServer
2017 년에 이것에 대한 규칙이 변경 되었기 때문에 가장 좋은 대답은 제품에 따라 다르다는 것입니다. 예를 들어 Gmail API에서 Oauth 2.0 새로 고침 토큰은 비밀번호 변경시 만료됩니다. https://support.google.com/a/answer/6328616?hl=ko를 참조 하세요.
우리는 미리 API 액세스를 설정하고 새 Gmail 사용자를 설정할 때 새로 고침 토큰을 생성 한 다음 해당 메일을 보관할 수 있었지만 (법률에 따라 수행해야 함) 이제는 암호를 변경하는 즉시 새로 고침 토큰 취소되었습니다.
아마도 유튜브,지도의 경우 새로 고침 토큰은 여전히 오래 지속되지만 Gmail API의 경우 짧은 토큰에 의존합니다.
새로 고침 토큰의 주요 개념은 오래 지속되고 만료되지 않는다는 것입니다.
액세스 토큰에는 만료 시간이 있으며 만료되면 만료되면 사용자가 자신의 계정에서 취소 할 때까지 계속해서 사용할 토큰 새로 고침을 사용할 수 있습니다.
https://developers.google.com/identity/protocols/oauth2#expiration 에서 읽어보십시오 . 부여 된 새로 고침 토큰이 더 이상 작동하지 않을 가능성을 예상하려면 코드를 작성해야합니다. 다음 이유 중 하나로 인해 새로 고침 토큰이 작동하지 않을 수 있습니다.
사용자가 앱의 액세스를 취소했습니다. 새로 고침 토큰이 6 개월 동안 사용되지 않았습니다. 사용자가 비밀번호를 변경했으며 새로 고침 토큰에 Gmail 범위가 포함되어 있습니다. 사용자 계정이 허용 된 (라이브) 새로 고침 토큰의 최대 수를 초과했습니다. 현재 클라이언트 당 사용자 계정 당 새로 고침 토큰은 50 개로 제한됩니다. 제한에 도달하면 새 새로 고침 토큰을 만들면 경고없이 가장 오래된 새로 고침 토큰이 자동으로 무효화됩니다. 이 제한은 서비스 계정에는 적용되지 않습니다.
또한 사용자 계정 또는 서비스 계정이 모든 클라이언트에서 가질 수있는 총 새로 고침 토큰 수에 더 큰 제한이 있습니다. 대부분의 일반 사용자는이 제한을 초과하지 않지만 개발자의 테스트 계정은 가능합니다.
추가 조사를 수행했으며 첫 번째 '오프라인'요청 중에 Google 액세스 토큰이 새로 고침 토큰을 검색하는 데 사용되는 것 같습니다. 이 시점부터 새로 고침 토큰을 사용하여 새 액세스 토큰을 발급합니다. 개념은 액세스 토큰이 단기 토큰이지만 장기 갱신 토큰으로 갱신 할 수 있다는 것입니다. 이렇게하면 두 개의 엔드 포인트 접근 방식이 필요하고 리퍼러 기반 요청을 사용하여 시작해야하는 URL 'code'변수를 요청할 필요가 없습니다.
http://www.jensbits.com/2012/01/09/google-api-offline-access-using-oauth-2-0-refresh-token/
Dropbox와 같은 일부 REST API 서비스는 영원히 지속되는 액세스 토큰을 발행하지만 Google은 단기 액세스 토큰을 발행합니다. PayPal은 타협을 사용하여 URI 리퍼러 시행없이 액세스 토큰을 검색 할 수 있습니다. 이는 프로세스를 시작하기 위해 링크를 클릭하지 않고도 액세스 토큰을 검색 할 수 있음을 의미합니다. Google의 방법론은 API 루틴이 필요한 경우에만 호출되어야 함을 의미합니다. 기본적으로 호출은 참조 자 기반 절차를 통해 시작됩니다. 이는 단기 액세스 토큰 또는 체인에서 새로 고쳐야하는 액세스 토큰을 발행하여 제어됩니다. 이를 위해서는 개발자가 시스템 흐름에 대해 더 신중하게 생각해야합니다.