我正在开发一个使用 OAuth2 和谷歌客户端库(在 Appengine 和 GWT BTW 上)访问谷歌 API(从日历 API 开始)的应用程序。
我已经实现了我的OAuth2Call
后台 servlet,扩展了 Google AbstractAppEngineAuthorizationCodeCallbackServlet
.
我有它的工作,我可以访问并可以查看日历等,但有两个问题:
1)尽管明确请求离线访问,但我没有获得刷新令牌:
public static GoogleAuthorizationCodeFlow newFlow( String scope ) throws IOException {
GoogleAuthorizationCodeFlow.Builder builder = new GoogleAuthorizationCodeFlow.Builder(
HTTP_TRANSPORT,
JSON_FACTORY,
getClientSecrets(),
Collections.singleton( scope ) );
builder.setCredentialStore( new AppEngineCredentialStore() ).setAccessType("offline");
return builder.build();
}
2) 我看不到如何设置自动刷新功能。这些页面描述了这些方法:
但我看不到在哪里添加刷新侦听器。类中没有这样的方法GoogleAuthorizationCodeFlow.Builder
,不像Credential.Builder
类
编辑在更多地调试代码之后,当凭证返回时(在onSuccess()
方法中)它似乎已经有一个RefreshListener
集合.....所以也许这是他们的默认设置,我唯一的问题是我没有得到一个refresh_token
,尽管问为了它。
也许还需要查看 Google API 控制台中的设置?