내 세션이 매 시간 만료되며 서비스 계정 인증 방법을 사용할 때 토큰을 새로 고치는 방법에 대한 문서를 찾을 수 없습니다. 설치된 응용 프로그램을 위해 나는 state
객체Google 드라이브 서비스 계정 새로 고침
AuthorizationState state = new AuthorizationState(new[]
{
"https://www.googleapis.com/auth/drive",
"https://www.googleapis.com/auth/drive.file",
"https://www.googleapis.com/auth/drive.metadata.readonly",
"https://www.googleapis.com/auth/drive.readonly"
})
{
Callback = new Uri(NativeApplicationClient.OutOfBandCallbackUrl)
}
state = client.ProcessUserAuthorization(GetAuthorizationCode(), state);
Console.WriteLine(state.RefreshToken);
에서 RefreshToken
를 얻을 수 있어요하지만 어떻게 서비스 계정에 대해 그렇게?
X509Certificate2 certificate = new X509Certificate2(SERVICE_ACCOUNT_PKCS12_FILE_PATH, "mysecret", X509KeyStorageFlags.Exportable);
var provider = new AssertionFlowClient(GoogleAuthenticationServer.Description, certificate)
{
ServiceAccountId = SERVICE_ACCOUNT_EMAIL,
Scope = DriveService.Scopes.Drive.GetStringValue(),
ServiceAccountUser = "[email protected]",
};
var auth = new OAuth2Authenticator<AssertionFlowClient>(provider, AssertionFlowClient.GetState);
DriveService service = DriveService(auth);
구글 SDK 소스 코드에서 나는
AssertionFlowClient.GetState
함수가 토큰 새로 고침을하는 것처럼 다음
IAuthorizationState state = new AuthorizationState(provider.Scope.Split(' '));
if (provider.RefreshToken(state, null)) {
return state;
} else {
return null;
}
그래서 보이는 수행하는 것을 발견했다. 이 함수 호출을 토큰 새로 고침 타이머에 추가했지만 도움이되지 않습니다. 나는 아직도 1 시간 후에 Invalid credentials
예외를 얻는 것을 계속한다.
좀 더 구체적으로 요구 사항을 알려주시겠습니까? 위에서 내가 이해 한 것은 새로 고침 토큰이 있고 원하는 모든 것이 새로운 액세스 토큰이라는 것입니다. 맞습니까? –