我有一个部署为API Executable的Google Apps脚本。我可以从我的基于java的Web应用程序调用它。但是,{strong>仅有时与Authorization is required to perform that operation
失败。我已完成分析并发现它失败,因为如果访问令牌到期时间少于6分钟,Apps脚本会返回此错误。有一个原因可以解释为什么Apps Script会以这种方式运行,这超出了这个问题的范围。但是,解决方法是在到期时间小于6分钟时生成新的access_token
。
我正在使用Java Google客户端库来管理访问令牌:
GoogleCredential credential = new GoogleCredential.Builder()
.setTransport(httpTransport)
.setJsonFactory(jsonFactory)
.setClientSecrets("<<clientId>>", "<<clientSecret>>")
.build();
credential.setRefreshToken("<<refresh_token>>");
使用上面的credential
我正在创建Script
对象:
Script scriptService = new Script.Builder(httpTransport, jsonFactory, credential).setApplicationName("test").build();
调用Apps脚本:
scriptService.scripts().run("test script");
客户端库负责生成访问令牌,将其存储在内存中,到期时调用OAuth API以生成新令牌。
现在,我需要你的建议:
答案 0 :(得分:0)
以下是查找令牌过期并生成新访问令牌的剩余时间的代码:
检查访问令牌的到期时间是否少于6分钟
credential.getExpiresInSeconds()
如果是,则生成新的访问令牌
credential.refreshToken()