代理背后的 Google Drive API Java 客户端

2024-01-12

我正在尝试使用 Drive API 编写一个 java 客户端驱动器 API v2 https://developers.google.com/resources/api-libraries/documentation/drive/v2/java/latest/。但是,我在尝试在代码中执行 OAuth2 身份验证时遇到错误。我认为这可能是代理问题,我尝试通过在代码中设置代理来解决该问题,但没有帮助。

This https://developers.google.com/drive/v2/web/quickstart/java#prerequisites是我提到的编写程序的指南。

这是我的代码片段:

public static Credential authorize() throws IOException {
            // Load client secrets.
            Credential credential = null;

            try{

            GoogleClientSecrets clientSecrets =
                GoogleClientSecrets.load(JSON_FACTORY, new InputStreamReader(new FileInputStream("client_secret.json")));

            // Build flow and trigger user authorization request.

            GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder(
                      HTTP_TRANSPORT, JSON_FACTORY, clientSecrets,
                      Collections.singleton(DriveScopes.DRIVE)).setDataStoreFactory(
                      DATA_STORE_FACTORY).build();

            credential = new AuthorizationCodeInstalledApp(
                flow, new LocalServerReceiver()).authorize("user");

            System.out.println(
                    "Credentials saved to " + DATA_STORE_DIR.getAbsolutePath());
            }catch(Exception e){
                e.printStackTrace(); System.exit(0);
                }
            return credential;

        }

        /**
         * Build and return an authorized Drive client service.
         * @return an authorized Drive client service
         * @throws IOException
         */
        public static Drive getDriveService() throws IOException {
            System.setProperty("http.proxyHost","10.3.100.207") ;
            System.setProperty("http.proxyPort", "8080") ;

            Credential credential = authorize();
            return new Drive.Builder(
                    HTTP_TRANSPORT, JSON_FACTORY, credential)
                    .setApplicationName(APPLICATION_NAME)
                    .build();
        }

这是堆栈跟踪:

2016-05-19 18:41:54.989:INFO::Logging to STDERR via org.mortbay.log.StdErrLog
2016-05-19 18:41:54.990:INFO::jetty-6.1.26
2016-05-19 18:41:55.001:INFO::Started SocketConnector@localhost:51307
Please open the following address in your browser:
  https://accounts.google.com/o/oauth2/auth?client_id=904439877486-uqiqmstss1bdcmhabt0gom905jo3hqsv.apps.googleusercontent.com&redirect_uri=http://localhost:51307/Callback&response_type=code&scope=https://www.googleapis.com/auth/drive
2016-05-19 18:42:28.496:INFO::Stopped SocketConnector@localhost:51307
java.net.UnknownHostException: accounts.google.com
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:184)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:589)
at sun.security.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:668)
at sun.net.NetworkClient.doConnect(NetworkClient.java:175)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:432)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:527)
at sun.net.www.protocol.https.HttpsClient.<init>(HttpsClient.java:264)
at sun.net.www.protocol.https.HttpsClient.New(HttpsClient.java:367)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.getNewHttpClient(AbstractDelegateHttpsURLConnection.java:191)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1105)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:999)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:177)
at sun.net.www.protocol.http.HttpURLConnection.getOutputStream0(HttpURLConnection.java:1283)
at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1258)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:250)
at com.google.api.client.http.javanet.NetHttpRequest.execute(NetHttpRequest.java:77)
at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:981)
at com.google.api.client.auth.oauth2.TokenRequest.executeUnparsed(TokenRequest.java:283)
at com.google.api.client.googleapis.auth.oauth2.GoogleAuthorizationCodeTokenRequest.execute(GoogleAuthorizationCodeTokenRequest.java:158)
at com.google.api.client.googleapis.auth.oauth2.GoogleAuthorizationCodeTokenRequest.execute(GoogleAuthorizationCodeTokenRequest.java:79)
at com.google.api.client.extensions.java6.auth.oauth2.AuthorizationCodeInstalledApp.authorize(AuthorizationCodeInstalledApp.java:82)
at DriveAPITest.authorize(DriveAPITest.java:84)
at DriveAPITest.getDriveService(DriveAPITest.java:104)
at DriveAPITest.main(DriveAPITest.java:116)
Exception in thread "main" java.net.UnknownHostException: www.googleapis.com
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:184)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:589)
at sun.security.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:668)
at sun.net.NetworkClient.doConnect(NetworkClient.java:175)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:432)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:527)
at sun.net.www.protocol.https.HttpsClient.<init>(HttpsClient.java:264)
at sun.net.www.protocol.https.HttpsClient.New(HttpsClient.java:367)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.getNewHttpClient(AbstractDelegateHttpsURLConnection.java:191)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1105)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:999)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:177)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:153)
at com.google.api.client.http.javanet.NetHttpRequest.execute(NetHttpRequest.java:93)
at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:981)
at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:419)
at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:352)
at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.execute(AbstractGoogleClientRequest.java:469)
at DriveAPITest.main(DriveAPITest.java:121)

我打开浏览器的身份验证链接,批准权限后显示以下消息:

收到验证码。您现在可以关闭此窗口...

希望有人能指出我正确的方向。


您应该定义您的代理和 HttpTransport:

final Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("your address", port));
final HttpTransport httpTransport = new NetHttpTransport.Builder().setProxy(proxy).build();

// Build flow and trigger user authorization request.
GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder(httpTransport, JSON_FACTORY, clientSecrets, SCOPES)
                                        .setDataStoreFactory(DATA_STORE_FACTORY)
                                        .setAccessType("offline")
                                        .build();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

代理背后的 Google Drive API Java 客户端 的相关文章

随机推荐

  • 从 Pandas 数据框中删除重复的行,其中只有某些列具有相同的值

    我有一个 pandas 数据框 如下所示 A B C 1 2 x 1 2 y 3 4 z 3 5 x 我希望在特定列中共享相同值的行仅保留 1 行 在上面的例子中我指的是列A and B 换句话说 如果列的值A and B在数据框中出现多次
  • 如何在 Android Studio 中使用 Flutter RP2 清理构建?

    随着使用 Android Studio 3 1 4 发布 FLutter Release Preview 2 当我使用命令 stop main dart 命令 f2 从 Android Studio 停止程序 然后执行 run main d
  • 在 gnuplot 5 中捕获超文本值

    我确实喜欢 gnuplot 5 中新的超文本功能 但我仍然缺少一些东西 我不仅希望悬停在某个点附近来阅读一些隐藏的文本 而且我还希望能够捕获超文本 如果这个超文本是一个鼠标变量 就像 MOUSE X 和 MOUSE Y 一样 捕获它将是一个
  • 在 Scala 中获取随机元素的有效方法?

    从 Scala 集合中获取随机元素的有效方法是什么 有一个相关的在这里提问 https stackoverflow com questions 5051574 how to choose a random element from an a
  • Google 应用引擎:按 ID 过滤

    我不知何故迷路了 我想做一些类似下面按 ID 过滤的事情 id 1000 query Customers all query filter ID id or query db GqlQuery select from Customers w
  • 如何安全地注销并清除所有订阅?

    我实现了自己的登录系统 因为我使用第三方 Web 服务根据企业身份验证系统对用户进行身份验证 因此 我构建了一个调用服务器方法的表单 以对身份验证系统进行 Web 服务调用 如果凭据有效 它会使用用户的 ID 设置会话变量 这就是我更改模板
  • 如何拥有自动递增的版本号(Visual Studio)? [复制]

    这个问题在这里已经有答案了 我想存储一组在构建时自动递增的整数 int MajorVersion 0 int MinorVersion 1 int Revision 92 当我编译时 它会自动递增Revision 当我构建安装项目时 它会增
  • 在 Objective-C 中合并 NSArray

    我有一个 NSDictionary 其中每个键都指向一个数组 我稍后想将所有值合并到一个数组中 有没有一种方法可以使用 API 做一些比说更有效的事情 NSArray anArray someDictionary allValues NSM
  • 更改 R DT 数据表中控件的颜色

    在 R 中 闪亮和数据表 DT 想要将控制文本的颜色更改为蓝色 因为它建议它可以在这里 https datatables net manual styling theme creator https datatables net manua
  • 如何为 Web 作业处理提供基于配置的队列名称?

    我有一个 webjob 应用程序来处理 ServiceBus 队列 它运行良好 使用以下方法 public static void ProcessQueueMessage ServiceBusTrigger myQueueName Brok
  • html5语义元素和旧浏览器

    我即将为网页设计一个新的布局 并想利用这一刻来实现一些 html5 标记 我首先想到的是语义元素 导航 标题 文章 检查后http caniuse com feat html5 语义 http caniuse com feat html5s
  • Terraform 错误“您的查询未返回结果”

    我有以下 bom asg tf 文件 data aws ami bom ami most recent true filter name tag ami name values var environment bom ami owners
  • 使用 Conda 和 Spyder 安装 OpenCV

    我在使用 Conda 安装 OpenCV 时遇到问题 我尝试运行许多命令 但没有一个起作用 例如 当我跑步时conda install c anaconda opencv 按照https anaconda org anaconda open
  • 如何将 MongoDB - 正在运行的 Docker 容器的数据保存在新映像中?

    我有一个正在运行的 Mongodb 容器 名为 xyz 来自官方 Mongo Image 我创建了容器docker run d p 21707 21707 mongo在此容器中 我创建了 2 个包含示例数据的集合 现在我想在 dockerh
  • Mule http:outbound-endpoint + multipart/form-data

    我正在尝试调用一个期望接收多部分 表单数据的休息服务 但我遇到了一些问题 经过一段时间的搜索 我了解到我必须将有效负载移动到出站附件并将有效负载设置为空
  • 假设 DayOfWeek 的数值是否安全?

    我将星期几存储在数据库中 其中星期日 1 星期一 2 等 在数据库查询中 我需要将日期转换为System DayOfWeek 根据MSDN http msdn microsoft com en us library system dayof
  • 使用 libgdx 进行触摸滚动

    我正在尝试在 libgdx 游戏中实现触摸滚动 我有一张宽图像 是房间的全景图 我希望能够滚动图像 以便用户可以看到房间周围的情况 我拥有它 这样我就可以滚动一定的距离 但是当注册新的 touchDragged 事件时 图像会移回到原始位置
  • ASP.NET MVC 资源文件的最佳实践

    以下资源文件的最佳用途是什么 属性 资源 Phil http haacked com archive 2009 12 07 localizing aspnetmvc validation aspx在 DataAnnotation 中使用此资
  • MIUM 8 红米手机后台服务被杀死如何重启

    我在用sticky service用于后台操作 即使应用程序处于运行状态 它在所有手机中也能正常工作closed通过从堆栈中滑动 然后服务重新启动 但在RedMi Note 3w当应用程序通过从堆栈滑动关闭时 service is not
  • 代理背后的 Google Drive API Java 客户端

    我正在尝试使用 Drive API 编写一个 java 客户端驱动器 API v2 https developers google com resources api libraries documentation drive v2 jav