【发布时间】:2021-02-10 11:23:00
【问题描述】:
我设法在前端获取了 access_token 和 refresh_token,现在将其存储在数据库中,在后端 .netcore 应用程序上我创建了 googlecredential
var cred=googleCredential.fromAccessToken(access_token);
但是这个不会自己刷新,我不知道如何刷新。我可以向他们的 rest api 发送一个发布请求并刷新它,但我需要知道“creds”何时过期才能发送该刷新请求。 PS 知道令牌在数据库中,因此不能使用 .fromaccesstoken 以外的任何内容。
编辑: 无法共享完整的代码,但这是应用程序的流程。在 reactJS 应用程序中,我通过 react-google-login 模块获取授权码
<GoogleLogin
clientId="xxx"
buttonText="Login"
onSuccess={this.responseGoogle}
onFailure={this.responseGoogle}
cookiePolicy={"single_host_origin"}
scope="https://www.googleapis.com/auth/drive.readonly"
accessType="offline"
prompt="consent"
responseType="code"
/>
这将返回一个授权码作为唯一的响应正文,然后此响应与另一个端点一起用于在前端交换刷新和访问令牌,这些令牌被发送到将它们存储在数据库中的后端端点。现在服务器端可以通过
创建一个googlecredential对象this.googleCredentials=GoogleCredential.FromAccessToken(this.googleAccessToken);
唯一的问题是它不能自己处理刷新,所以你必须以某种方式实现它。
【问题讨论】:
-
我很想看看您的代码,了解您如何将其存储在数据库中。您在使用 google .net 客户端库吗?您可能需要向它提供刷新令牌,并且它应该能够请求新的访问令牌。我认为它都存储在会话中,因此您不需要将其存储在数据库中。
-
我已经添加了信息。 PS令牌只是短暂的,我想稍后用它来访问驱动器联系人等
-
访问令牌仅在一个小时内有效,您应该从刷新令牌构建凭据。
标签: c# asp.net-core google-api google-drive-api google-oauth