title: How to authenticate Google Drive without requiring the user to copy/paste auth code?
body: <p>I'm playing around with the DriveCommandLine applicaiton to learn the Drive API a bit.  I'm just wondering if it is possible to authenticate my desktop application with Google Drive without the user needing to copy/paste an auth code from the browser?  But rather just have a token passed back to the app from the browser?  I am able to do this with Dropbox API and with the Google Documents List API, but cannot figure out how to get this working with the Google Drive API.</p>
  
  <p>Thanks.</p>
  
  <p>Google Drive API - DriveCommandLine sample app (slightly modified):</p>
  
  <pre><code>public class DriveCommandLine {
  
    private static String CLIENT_ID = APPCONSTANTS.Google.CONSUMER_KEY;
    private static String CLIENT_SECRET = APPCONSTANTS.Google.CONSUMER_SECRET;
  
    private static String REDIRECT_URI = "urn:ietf:wg:oauth:2.0:oob";
  
    public static void main(String[] args) throws IOException, URISyntaxException {
      HttpTransport httpTransport = new NetHttpTransport();
      JsonFactory jsonFactory = new JacksonFactory();
  
      GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder(
          httpTransport, jsonFactory, CLIENT_ID, CLIENT_SECRET, Arrays.asList(DriveScopes.DRIVE))
          .setAccessType("offline")
          .setApprovalPrompt("force").build();
  
      String url = flow.newAuthorizationUrl().setRedirectUri(REDIRECT_URI).build();
      System.out.println("Enter authorization code:");
      Desktop.getDesktop().browse(new URI(url));
      BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
      String code = br.readLine();
  
      GoogleTokenResponse response = flow.newTokenRequest(code).setRedirectUri(REDIRECT_URI).execute();
      GoogleCredential credential = new GoogleCredential().setFromTokenResponse(response);
  
      //Create a new authorized API client
      Drive service = new Drive.Builder(httpTransport, jsonFactory, credential).build();
  }
  </code></pre>
  
  <p>Google Documents List API:</p>
  
  <pre><code>    public void authenticate(){
              GoogleOAuthParameters oauthParameters = new GoogleOAuthParameters();
              oauthParameters.setOAuthConsumerKey(APPCONSTANTS.Google.CONSUMER_KEY);
  
              OAuthSigner signer;
              if (APPCONSTANTS.Google.USE_RSA_SIGNING) {
                      signer = new OAuthRsaSha1Signer(APPCONSTANTS.Google.CONSUMER_SECRET);
              } else {
                  oauthParameters.setOAuthConsumerSecret(APPCONSTANTS.Google.CONSUMER_SECRET);
                  signer = new OAuthHmacSha1Signer();
              }
  
              GoogleOAuthHelper oauthHelper = new GoogleOAuthHelper(signer);
  
              oauthParameters.setScope(APPCONSTANTS.Google.SCOPES);
  
              oauthHelper.getUnauthorizedRequestToken(oauthParameters);
  
              String requestUrl = oauthHelper.createUserAuthorizationUrl(oauthParameters);
  
              Desktop desktop = Desktop.getDesktop();
              URI url = new URI(requestUrl);
              desktop.browse(url);
  
              String token = oauthHelper.getAccessToken(oauthParameters);
      }
  </code></pre>