나는 구글로 사용자를 인증하고 그들의 캘린더를 가져와야하는 작은 애플리케이션을 작성하고있다.
사용자가 요청을 수락하면 Google은 RefreshToken이있는 RequestToken을 제공합니다. Diamto DatabaseDataStore 의 예제를 사용하여 데이터베이스에 RefreshToken을 저장합니다 .
데이터베이스에 RefreshToken을 저장하려면 다음을 수행합니다.
var serialized = NewtonsoftJsonSerializer.Instance.Serialize(value);
좋구나. 잘 작동하지만 데이터베이스에서 RefreshToken을 찾을 때 역 직렬화해야합니다. 이를 위해 나는 그것을 사용합니다
TaskCompletionSource<T> tcs = new TaskCompletionSource<T>();
....
tcs.SetResult(NewtonsoftJsonSerializer.Instance.Deserialize<T>(refreshToken));
RefreshToken은 데이터베이스의 문자열입니다.
deserialization에서 다음 오류가 발생합니다.
System.String에서 Google.Apis.Auth.OAuth2.Responses.TokenResponse로 캐스트하거나 변환 할 수 없습니다.
누구든지 문제가 어디 있는지 말해 줄 수 있기를 바랍니다.
다음과 같이 새 문자열을 사용하여 TokenResponse의 새 인스턴스를 만들 수 있습니다.
var tokenResponse = new TokenResponse
{
RefreshToken = refreshToken // or you will have to deserialize the string first
}
그런 다음 라이브러리를 그대로 계속 사용할 수 있으며 토큰 응답에는 액세스 토큰이 없으므로 라이브러리는 방금 데이터베이스에서 가져온 새로 고침 토큰을 사용하여 액세스 토큰을 새로 고치려고합니다.
TokenResponse 코드는 https://github.com/google/google-api-dotnet-client/blob/master/Src/GoogleApis.Auth/OAuth2/Responses/TokenResponse.cs#L49 에서 확인할 수 있습니다.
토큰 응답을 재사용하는 코드는 https://github.com/google/google-api-dotnet-client/blob/master/Src/GoogleApis.Auth/OAuth2/AuthorizationCodeInstalledApp.cs#L67에서 확인할 수 있습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다