Google 새로 고침 토큰이 만료 되나요?


108

테스트 목적으로 단기간에 새로 고침 토큰을 여러 번 사용했는데 Google 새로 고침 토큰이 만료되는지 궁금합니다. 동일한 새로 고침 토큰을 사용하여 장기간 (1 주 또는 심지어 몇 달) 동안 다른 액세스 토큰을 반복해서 얻을 수 있습니까?


루비를 사용하고 있습니까? 아니면 코드 샘플이 있습니까?
— Thufir

답변:


146

Google Auth 서버에서 발행 한 새로 고침 토큰은 만료되지 않습니다. 이것이 새로 고침 토큰의 요점입니다. 사용자가 애플리케이션에 대한 액세스를 취소하면 새로 고침 토큰이 만료됩니다 (또는 권한이 없음).

이 문서를 참조하면 새로 고침 토큰의 기능을 명확하게 설명합니다.

오래 지속되는 토큰 (일반적으로 1 년 또는 무제한 수명 동안 유효)을 발행하는 대신 서버는 수명이 짧은 액세스 토큰과 수명이 긴 새로 고침 토큰을 발행 할 수 있습니다. 즉, 액세스 권한을 부여한 사용자가 애플리케이션에 대한 액세스를 취소 할 때까지 새로 고침 토큰을 반복해서 사용할 수 있습니다.


6
"1 년 동안 좋다"부분은 당신이 제안한 것만 큼 명확하지 않다. 그러나 실제로 문제를 일으키지 않는 것 같기 때문에 새로 고침 토큰이 상록수라고 가정합니다.
— mahemoff 2013 년

54
토큰 만료 부여 된 토큰이 더 이상 작동하지 않을 가능성을 예상하는 코드를 작성해야합니다. 다음 이유 중 하나로 인해 토큰 작동이 중지 될 수 있습니다. 사용자가 액세스를 취소했습니다. 토큰은 6 개월 동안 사용되지 않았습니다. 사용자 계정이 특정 토큰 요청 수를 초과했습니다. 현재 Google 사용자 계정 당 25 개의 토큰 제한이 있습니다. 사용자 계정에 25 개의 유효한 토큰이있는 경우 다음 인증 요청은 성공하지만 사용자에게 표시되는 경고없이 가장 오래된 미해결 토큰을 자동으로 무효화합니다. (from developers.google.com/accounts/docs/OAuth2 )
— bazik 2014 년

17
'장수'갱신 토큰은 '만료 없음'과는 다른 것입니다.
— Kapé 2015 년

1
그렇다면 코드는 새로 고침 토큰이 여전히 유효한지 어떻게 확인할 수 있습니까?
— SsjCosty

3
@Shadow 제안 된대로 새로 고침 토큰이 거의 만료되지 않는 경우 Google은 우선 만료되지 않는 액세스 토큰을 발급하지 않는 이유가 무엇입니까? 내가 이해하는 한, oAuth 2.0을 사용하여 발급 된 액세스 토큰은 새로 고침 토큰을 요청하는 데 사용할 수 있습니다. 영구 액세스 토큰을 보유하고 새로 고침 토큰에 대한 추가 호출을 잘라내십시오.
— Charles Robertson

62

이것은 매우 혼란스러운 스레드입니다. 첫 번째 대답은 옳은 것처럼 보이지만 실제로 Google의 권위있는 내용을 인용하지는 않습니다.

내가 찾은 가장 확실한 답은 실제로 토큰을 얻는 개발자의 놀이터입니다. 2 단계 하단에는 다음과 같은 메모가 있습니다.

"참고 : OAuth Playground는 새로 고침 토큰을 저장하지 않지만 새로 고침 토큰은 만료되지 않으므로 수동으로 취소하려면 Google 계정 승인 액세스 페이지로 이동해야합니다."

https://developers.google.com/oauthplayground/


2
여기에 가장 좋은 답변-왜 아무도 찬성하지 않았는지 믿을 수 없습니다. 감사합니다. 새로 고침 토큰을 만료되지 않는 것처럼 취급하세요.하지만 로그인시 사용자가 새로 고침 토큰을 취소 할 경우 새 토큰을 확인하세요.이 시나리오에서는 Google이 새 새로 고침 토큰을 제공합니다. 로그인 할 때 새로 고침 토큰을 업데이트하세요
— danday74 jul.

14

나는 그것이 완전히 사실이라고 생각하지 않습니다.

발급 될 새로 고침 토큰 수에는 제한이 있습니다. 클라이언트 / 사용자 조합 당 한도, 모든 클라이언트의 사용자 당 한도입니다. 새로 고침 토큰을 장기 저장소에 저장하고 유효한 상태로 유지되는 한 계속 사용해야합니다. 애플리케이션에서 너무 많은 새로 고침 토큰을 요청하면 이러한 제한에 도달 할 수 있으며,이 경우 이전 새로 고침 토큰이 작동을 중지합니다.

이 페이지에서 : https://developers.google.com/youtube/v3/guides/authentication#installed-apps

그것은 youTube 문서 (다른 API 문서보다 훨씬 낫다는 것을 알았습니다)에서 온 것이지만 모든 Google 앱에서 동일하다고 생각합니다.



5

2017 년에 이것에 대한 규칙이 변경 되었기 때문에 가장 좋은 대답은 제품에 따라 다르다는 것입니다. 예를 들어 Gmail API에서 Oauth 2.0 새로 고침 토큰은 비밀번호 변경시 만료됩니다. https://support.google.com/a/answer/6328616?hl=ko를 참조 하세요.

우리는 미리 API 액세스를 설정하고 새 Gmail 사용자를 설정할 때 새로 고침 토큰을 생성 한 다음 해당 메일을 보관할 수 있었지만 (법률에 따라 수행해야 함) 이제는 암호를 변경하는 즉시 새로 고침 토큰 취소되었습니다.

아마도 유튜브,지도의 경우 새로 고침 토큰은 여전히 ​​오래 지속되지만 Gmail API의 경우 짧은 토큰에 의존합니다.


2016 년 10 월 5 일에 공식화 한 것 같습니다. developers.googleblog.com/2016/09/…
— TonyE

2

새로 고침 토큰의 주요 개념은 오래 지속되고 만료되지 않는다는 것입니다.

액세스 토큰에는 만료 시간이 있으며 만료되면 만료되면 사용자가 자신의 계정에서 취소 할 때까지 계속해서 사용할 토큰 새로 고침을 사용할 수 있습니다.


0

https://developers.google.com/identity/protocols/oauth2#expiration 에서 읽어보십시오 . 부여 된 새로 고침 토큰이 더 이상 작동하지 않을 가능성을 예상하려면 코드를 작성해야합니다. 다음 이유 중 하나로 인해 새로 고침 토큰이 작동하지 않을 수 있습니다.

사용자가 앱의 액세스를 취소했습니다. 새로 고침 토큰이 6 개월 동안 사용되지 않았습니다. 사용자가 비밀번호를 변경했으며 새로 고침 토큰에 Gmail 범위가 포함되어 있습니다. 사용자 계정이 허용 된 (라이브) 새로 고침 토큰의 최대 수를 초과했습니다. 현재 클라이언트 당 사용자 계정 당 새로 고침 토큰은 50 개로 제한됩니다. 제한에 도달하면 새 새로 고침 토큰을 만들면 경고없이 가장 오래된 새로 고침 토큰이 자동으로 무효화됩니다. 이 제한은 서비스 계정에는 적용되지 않습니다.

또한 사용자 계정 또는 서비스 계정이 모든 클라이언트에서 가질 수있는 총 새로 고침 토큰 수에 더 큰 제한이 있습니다. 대부분의 일반 사용자는이 제한을 초과하지 않지만 개발자의 테스트 계정은 가능합니다.


-2

추가 조사를 수행했으며 첫 번째 '오프라인'요청 중에 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 루틴이 필요한 경우에만 호출되어야 함을 의미합니다. 기본적으로 호출은 참조 자 기반 절차를 통해 시작됩니다. 이는 단기 액세스 토큰 또는 체인에서 새로 고쳐야하는 액세스 토큰을 발행하여 제어됩니다. 이를 위해서는 개발자가 시스템 흐름에 대해 더 신중하게 생각해야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.