我正在开发一个应用程序,我从我的应用程序中将文件同步到GDrive,我已经阅读了关于开发人员支持的快速入门指南。我也可以使用示例代码上传文件。但我想摆脱谷歌返回的授权代码的复制/粘贴。在阅读了stackoverflow上的一些帖子后,我开始了解redirect_uri
我更改为http://localhost
我也在浏览器中获取了auth代码,但我不知道如何从浏览器获取它到我的java应用程序。请指导我如何从本地Web服务器获取auth代码到我的java应用程序。
提前致谢。所有的开发者朋友都祝圣诞快乐。
这是我实施的代码。
public class CMDApp {
private static String CLIENT_ID = "CLIENT_ID";
private static String CLIENT_SECRET = "CLIENT_SECRET";
//private static String REDIRECT_URI = "urn:ietf:wg:oauth:2.0:oob";
private static String REDIRECT_URI = "http://localhost/authCode";
public static void main(String[] args) throws IOException {
HttpTransport httpTransport = new NetHttpTransport();
JsonFactory jsonFactory = new JacksonFactory();
GoogleAuthorizationCodeFlow 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();
System.out.println("Please open the following URL in your browser then type the authorization code:");
Desktop.getDesktop().browse(java.net.URI.create(url));
System.out.println(" " + 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();
//Insert a file
File body = new File();
body.setTitle("My document");
body.setDescription("A test document");
body.setMimeType("text/plain");
java.io.File fileContent = new java.io.File("D:\\Java GDrive Integration\\CMDApp\\src\\document.txt");
FileContent mediaContent = new FileContent("text/plain", fileContent);
File file = service.files().insert(body, mediaContent).execute();
System.out.println("File ID: " + file.getId());
} }
我想从浏览器中获取此代码中的Auth代码。
答案 0 :(得分:0)
您可以在jsp文件中使用request.getParameter(“code”)并在请求对象中设置 例如
<%
String authCode = request.getParameter("code");
request.setAttribute("authCode",authCode);
%>
和你的服务器端你可以得到它
request.getAttribute("authCode");
答案 1 :(得分:0)
因此,您要在用户系统上启动默认浏览器,并要求他们登录,最后将代码复制并粘贴回您的应用程序。
这样,您无法控制浏览器应用程序,也无法自动获取身份验证代码。
尝试使用Webview将内置的浏览器窗口集成到Java应用程序中。
如果你的应用程序是Swing应用程序,你可以使用它。
http://docs.oracle.com/javafx/2/swing/swing-fx-interoperability.htm#CHDIEEJE
集成应用内浏览器后,您可以在用户完成登录后轻松捕获验证码,然后关闭浏览器,并在应用程序中使用该验证码。