防止oAuth 2.0 Google云端硬盘凭证过期

时间:2014-05-02 19:16:21

标签: java oauth-2.0 google-drive-api

目前,我正在使用oAuth 2.0将Google Drive API与我的桌面应用集成。

我意识到,经过一段时间后,磁盘上存储的Credential将会过期。当它发生时,我需要再次通过浏览器提示用户,要求他们输入用户名和密码。

https://github.com/yccheok/jstock/blob/master/src/org/yccheok/jstock/google/MyAuthorizationCodeInstalledApp.java#L53

public Pair<Pair<Credential, Userinfoplus>, Boolean> authorize(String userId) throws IOException {
    try {
        Credential credential = flow.loadCredential(userId);
        if (credential != null
            && (credential.getRefreshToken() != null || credential.getExpiresInSeconds() > 60)) {
            Userinfoplus userinfoplus = org.yccheok.jstock.google.Utils.getUserInfo(credential);
            return new Pair<Pair<Credential, Userinfoplus>, Boolean>(new Pair<Credential, Userinfoplus>(credential, userinfoplus), true);
        }
        // open in browser
        redirectUri = receiver.getRedirectUri();

由于用户将继续使用我的桌面应用程序数天,数周和数月,因此他们希望提供用户名和用户名。密码只有一次。

有没有办法阻止Credential过期?我相信这是可以实现的,因为桌面版Google云端硬盘从不会提示我输入我的用户名和密码。

1 个答案:

答案 0 :(得分:0)

我们可以&#34;刷新&#34; Credential致电refreshToken

boolean success = false;
if (credential.getExpiresInSeconds() <= 60) {
    if (credential.refreshToken()) {
        success = true;
    }
} else {
    success = true;
}