我们需要使用Google日历API。
为了对请求进行身份验证,我们从Google oauth2服务提供的授权令牌中获取访问令牌并刷新令牌。
但是,由于刷新令牌的有效时间为一小时,因此我们每小时刷新一次每个refresh_token。 但是对于某些用户来说,刷新令牌仍已过期(即使他们没有撤消其Google设置的权限)。
问题:
是否有更好的方法来刷新刷新令牌?
我们真的需要每隔一小时继续获取新的刷新令牌吗?
我正在使用react-google-login库从Google请求身份验证令牌。
我的服务器在python3中,并使用oauth2client库。
用于获取新的刷新令牌的代码段,如下所示:
import httplib2
def refresh_token(credentials):
http = credentials.authorize(httplib2.Http())
credentials.refresh(http)
return credentials
Some Props to get google authorisation token from react application:
const googleAPIProps = {
clientId: GOOGLE_CLIENT_ID,
scope: APIKEYS.googleAuth.scopes.join(' '),
responseType: 'code',
prompt: 'consent',
isSignedIn: false,
accessType: 'offline',
uxMode: 'popup'
};
我希望要么我们不必每隔一小时获取新的刷新令牌,要么至少credentials.refresh(http)
在旧的过期后获取新的refresh_token时不引发任何异常。
我收到的错误消息是:
invalid_grant: Bad Request
invalid_grant: Token has been expired or revoked
我认为#2是用户在其设置中手动撤消权限时,但我需要解决#1中提到的错误。