0

previous question posted here에 이어 서버 앱에서 캘린더 서비스를 사용하려고합니다.필요시에만 액세스 토큰 새로 고침

나는 "나 자신"인증 흐름을 관리하고 DB에 사용자의 액세스 토큰과 새로 고침 토큰을 저장합니다. 이제 나는 CalendarService을 사용하기 위해 .NET 클라이언트의 샘플에 표시된 방법을 사용할 수 있다고 생각합니다. 하지만 여전히 필요한 경우에만 액세스 토큰 새로 고침을 요청하기 위해 IAuthorizationState GetAuthorization(WebServerClient client) 메서드를 어떻게 구현하는 것이 가장 좋은지 궁금합니다. 내 현재의 순진한 구현은 매번 토큰을 새로 고칩니다.

private IAuthorizationState GetAuthorization(WebServerClient client) 
{ 
    IAuthorizationState state = new AuthorizationState(new[] { "profile", CalendarService.Scopes.Calendar.GetStringValue() }); 
    state.AccessToken = _accessToken; 
    state.RefreshToken = _refreshToken; 

    client.RefreshToken(state); 

    return state; 
} 

...하지만 이렇게하는 것이 더 스마트 한 방법입니다.

미리 감사드립니다.

답변

4

성능 V. 대역폭, 세션의 길이 등의 필요성에 따라 사용할 수있는 흐름의 숫자가있다

  1. 당신은 더 적극적으로 새로 고침을하지 않는다 트랜잭션이 다음 401을 실패하도록 할 수 있습니다 새 토큰을 가져 와서 트랜잭션을 다시 시도하십시오. 대역폭과 처리를 효율적으로 사용하지만 트랜잭션을 지연시킵니다.
  2. 토큰의 만료 시간을 기록하고 만료 기한 인 1 분 전에 토큰을 새로 고치는 타이머 작업을 만들 수 있습니다. 사용 가능한 토큰이 항상 있기 때문에 최상의 성능을 제공하지만 대역폭과 처리 시간을 소모합니다.
  3. 트랜잭션을 시도하기 전에 토큰 시간 초과를 확인하십시오. 이 만료 된 경우 새로 만난 후 거래를 제출하십시오.5 분이 살면 사용하고 트랜잭션이 완료된 후 다음 번에 토큰을 새로 고칩니다. 이것은 효율적인 트랜잭션과 너무 많은 중복 새로 고침을하지 않는 최상의 균형을 제공합니다.
+0

오른쪽. .NET 클라이언트 라이브러리가 첫 번째 사례를 자동으로 수행 할 수 있는지 궁금 해서요.하지만 설명서가 없어 짐작스러운 게임이되었습니다. 데이터베이스에 액세스 토큰 만료일을 저장하고 만료일이 가까워지면 요청별로 새로 고침을 트리거합니다. – ThomasWeiss

+1

나는 같은 이유로 Google 도서관을 포기했습니다. – pinoyyid

+0

지난 몇 주 동안 더 나은 OAuth2 환경을 제공하기 위해 최선을 다하고 있습니다. 대부분의 코드는 이미 저장소에 있으며 가까운 장래에 여러 가지 코드 검토가 있습니다. 다음 주에 우리는 WP, WinRT, MVC, .NET 4 및 .NET 4.5 응용 프로그램 모두에서 OAuth2 작업에 대한 더 나은 개발자 경험을 제공 할 1.6.0-beta를 릴리스 할 예정입니다. 우리는 문서도 개선 할 것입니다. 지금까지 해본 경험이 좋지 않아 죄송합니다. 문제의 트랙커 https://code.google.com/p/google-api-dotnet-client/에서 새로운 문제를 자유롭게 열어보십시오. issues/list. – peleyal