0

我想获取用于离线登录的refreshToken。 我已经获得访问令牌,但我没有得到refreshToken。 这里是我的源代码:如何获取refreshToken?

 public void OpenBrower(){ 
     httpTransport = new NetHttpTransport(); 
     jsonFactory = new JacksonFactory();    
     flow = new GoogleAuthorizationCodeFlow.Builder(httpTransport, jsonFactory, CLIENT_ID, CLIENT_SECRET, 
       Arrays.asList(DriveScopes.DRIVE)).setAccessType("online").setApprovalPrompt("auto").build();   
     String url = flow.newAuthorizationUrl().setRedirectUri(REDIRECT_URI).build();   
     try { 
      java.awt.Desktop.getDesktop().browse(java.net.URI.create(url)); 
     } catch (IOException ex) { 
      Logger.getLogger(GoogleD.class.getName()).log(Level.SEVERE, null, ex); 
     }   
    } 
    public void Register(String code){ 
     GoogleTokenResponse response = null; 
     try { 
      response = flow.newTokenRequest(code).setRedirectUri(REDIRECT_URI).execute(); 
     } catch (IOException ex) { 
      Logger.getLogger(GoogleD.class.getName()).log(Level.SEVERE, null, ex); 
     } 
     GoogleCredential credential = new GoogleCredential().setFromTokenResponse(response); 

     client = new Drive.Builder(httpTransport, jsonFactory, credential).build(); 
     try { 
      System.out.println(credential.refreshToken()); 
     } catch (IOException ex) { 
      Logger.getLogger(GoogleD.class.getName()).log(Level.SEVERE, null, ex); 
     }   
    } 

回答

2

在你的代码,改变

.setAccessType("online") 

.setAccessType("offline") 
+0

谢谢u..You帮助了我很多次...... 我有一些题。所以..我会问,我想让你对我的问题感兴趣。 –

+0

你能检查这个问题吗?... http://stackoverflow.com/questions/19877831/how-do-i-get-refreshtoken-by-using-old-refreshtoken –

+0

对不起 - 我不知道。我不喜欢使用Oauth库,所以我使用原始的http请求,因为我发现它们更易于调试,并且实现起来并不困难。 – pinoyyid