刷新标记始终为空,我费力地阅读了文档并做了几个实验。但我无法让refreshToken续订访问令牌以供脱机使用。
我正在使用react-google-login来获取我的离线令牌。我假设这是正确设置的。
为了以防万一,设置如下:
<GoogleLogin
clientId="***"
buttonText="Login"
accessType="offline"
responseType="code"
scope={"https://www.googleapis.com/auth/calendar"}
onSuccess={responseGoogle}
onFailure={responseGoogle}
/>但是当我使用授权码时,只会返回一个有效期为3600秒的访问令牌。我可以使用accessToken来访问api。但是似乎没有提供刷新令牌。
GoogleTokenResponse tokenResponse =
new GoogleAuthorizationCodeTokenRequest(
new NetHttpTransport(),
JacksonFactory.getDefaultInstance(),
"https://www.googleapis.com/oauth2/v4/token",
clientSecrets.getDetails().getClientId(),
clientSecrets.getDetails().getClientSecret(),
AUTH_CODE,
REDIRECT_URL)
.execute();
String refreshToken = tokenResponse.getRefreshToken();
String accessToken = tokenResponse.getAccessToken();有什么问题的线索吗?
发布于 2018-12-29 21:49:12
它似乎与react-google-login有关...所以我一直在看错误的东西。添加approvalPrompt="force"和prompt='consent'似乎可以解决这个问题。
<GoogleLogin
clientId="***"
buttonText="Login"
accessType="offline"
responseType="code"
approvalPrompt="force"
prompt='consent'
scope={"https://www.googleapis.com/auth/calendar"}
onSuccess={responseGoogle}
onFailure={responseGoogle}
/>https://stackoverflow.com/questions/53969774
复制相似问题