Wie die Authentifizierung von Google-Laufwerk, ohne dass der Benutzer kopieren/einfügen auth-code?

Ich bin Herumspielen mit der DriveCommandLine Anwendung zu lernen, die Drive API ein bisschen. Ich Frage mich nur, ob es möglich ist, zu authentifizieren meinem desktop-Anwendung mit Google-Laufwerk, ohne die Benutzer benötigen, um zu kopieren/fügen Sie einen auth-code vom browser? Sondern nur ein token zurück an die app aus dem browser? Ich bin in der Lage, dies zu tun mit Dropbox-API und das Google Documents List API, aber kann nicht herausfinden, wie man diese Arbeit mit der Google Drive API.

Dank.

Google Drive-API - DriveCommandLine Beispiel-app (leicht modifiziert):

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();
}

Google Documents List API:

    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);
    }
  • Was redirect_uri Werte verwenden Sie für jede dieser Optionen? Verwenden Sie die gleichen fließt?
  • Ich Hinzugefügt mein code, wie ich die Authentifizierung mit dem Google Documents List API, um die OP.
InformationsquelleAutor PseudoPsyche | 2012-09-20
Schreibe einen Kommentar