反序列化字符串到 Google TokenResponse



我正在编写一个小应用程序,它必须使用google对用户进行身份验证并获取他们的日历。

如果用户接受请求,Google会给我们一个RequestToken,其中包含RefreshToken。我们将 RefreshToken 存储在我们的数据库中,并使用 Diamto DatabaseDataStore 中的示例。

要将刷新令牌存储在数据库中,我这样做:

var serialized = NewtonsoftJsonSerializer.Instance.Serialize(value);

好。它工作正常,但是当我在数据库中查找 RefreshToken 时,它必须反序列化。为此,我使用它

TaskCompletionSource<T> tcs = new TaskCompletionSource<T>();
....
tcs.SetResult(NewtonsoftJsonSerializer.Instance.Deserialize<T>(refreshToken));

刷新令牌是数据库中的字符串。

在反序列化时,我收到以下错误:

无法将 System.String 转换为 Google.Apis.Auth.OAuth2.Responses.TokenResponse.

我希望,任何人都可以告诉我问题出在哪里。

看起来您可以使用新字符串创建一个新的 TokenResponse 实例,如下所示:

var tokenResponse = new TokenResponse
{
    RefreshToken = refreshToken // or you will have to deserialize the string first
}

然后,您可以继续按原样使用库,令牌响应没有访问令牌,因此库将尝试使用刚刚从数据库中获取

的刷新令牌刷新访问令牌。

令牌响应代码可在以下位置获得: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

相关内容

  • 没有找到相关文章

最新更新