当前位置: 首页 > 知识库问答 >
问题:

Drive Builder错误:API Google Drive Spring Boot

谢涵煦
2023-03-14

我的代码有问题。你们能帮帮我吗?

进程service=new com.google.api.services.drive.drive.builder(httpTransport,JSON_FACTORY,credential).setapplicationname(APPLICATION_NAME).build();

@Controller
@RestController
public class GoogleOauthController {

    private static final String APPLICATION_NAME = "oauth drive";
    private static HttpTransport httpTransport;
    private static final JsonFactory JSON_FACTORY = JacksonFactory.getDefaultInstance();
    private static com.google.api.services.drive.Drive service;

    GoogleClientSecrets clientSecrets;
    GoogleAuthorizationCodeFlow flow;
    Credential credential;

    @Value("${drive.client.clientId}")
    private String clientId;

    @Value("${drive.client.clientSecret}")
    private String clientSecret;

    @Value("${drive.client.redirectUri}")
    private String redirectUri;

    @RequestMapping(value = "/login/drive", method = RequestMethod.GET)
    public RedirectView googleConnectionStatus(HttpServletRequest request) throws Exception {
        return new RedirectView(authorize());
    }

    @RequestMapping(value = "/login/callbackoauth", method = RequestMethod.GET, params = "code")
    public List<File> oauth2Callback(@RequestParam(value = "code") String code) {

        // System.out.println("code->" + code + " userId->" + userId + "
        // query->" + query);

        JSONObject json = new JSONObject();
        JSONArray arr = new JSONArray();

         List<File> result = new ArrayList<File>();

        // String message;
        try {
            TokenResponse response = flow.newTokenRequest(code).setRedirectUri(redirectUri).execute();
            credential = flow.createAndStoreCredential(response, "userID");

            service = new com.google.api.services.drive.Drive.Builder(httpTransport, JSON_FACTORY, credential)
                    .setApplicationName(APPLICATION_NAME).build();
            System.out.println(service);
            Files.List request = service.files().list();

            do {
                  try {
                    FileList files = request.execute();

                    result.addAll(files.getItems());
                    request.setPageToken(files.getNextPageToken());
                  } catch (IOException e) {
                    System.out.println("An error occurred: " + e);
                    request.setPageToken(null);
                  }
                } while (request.getPageToken() != null &&
                         request.getPageToken().length() > 0);


        } catch (Exception e) {

            System.out.println("exception cached ");
            e.printStackTrace();
        }

        return result;
    }

    private String authorize() throws Exception {
        AuthorizationCodeRequestUrl authorizationUrl;
        if (flow == null) {
            Details web = new Details();
            web.setClientId(clientId);
            web.setClientSecret(clientSecret);
            clientSecrets = new GoogleClientSecrets().setWeb(web);
            httpTransport = GoogleNetHttpTransport.newTrustedTransport();
            flow = new GoogleAuthorizationCodeFlow.Builder(httpTransport, JSON_FACTORY, clientSecrets,
                    Collections.singleton(DriveScopes.DRIVE)).build();
        }
        authorizationUrl = flow.newAuthorizationUrl().setRedirectUri(redirectUri);

        System.out.println("drive authorizationUrl ->" + authorizationUrl.build());
        return authorizationUrl.build();
    }
}

出现错误(Type=内部服务器错误,状态=500)。GoogleJSONClient.(LCOM/Google/API/Client/HTTP/HTTPTransport;LCOM/Google/API/Client/HTTP/HTTPRequestInitializer;LJava/Lang/String;LJava/Lang/String;LCOM/Google/API/Client/JSONObjectParser;LCOM/Google/API/Client/GoogleAPIS/Services/GooglePlientRequestInitializer;LJava/Lang/String;Z)V

和来自控制台的错误:

错误7756---[nio-8080-exec-2]O.A.C.C.C.[.[.[/].[dispatcherServlet]:路径为[]的上下文中servlet[dispatcherServlet]的servlet.Service()引发异常[处理程序调度失败;嵌套html" target="_blank">异常为java.lang.NoSuchMethoderRror:com.google.api.client.googleapis.services.json.AbstractGoogleJsonClient。(LCOM/Google/API/Client/HTTP/HttpTransport;LCOM/Google/API/Client/HTTP/HttpRequestInitializer;LJava/Lang/String;LJava/Lang/String;LCOM/Google/API/Client/JSONObjectParser;/GoogleAPIS/Services/GoogleClientRequestInitializer;LJava/Lang/String;z)v]具有根本原因

谢谢

共有1个答案

于捷
2023-03-14

如果遇到内部服务器错误,本文档中建议的操作是使用截断的指数退避重试。这里还建议在重试非幂等请求之前包含一个检查。

 类似资料:
  • 我正在尝试搜索亚马逊的产品广告,并使用botlenose来帮助我做到这一点。但是,我刚刚收到HTTP错误400。 其他一些重要信息: 我来自巴西,我的标签也来自亚马逊。这是个问题吗? 我确实检查了我的钥匙、秘密和标签,一切正常。我确实在StackOverflow上查看了其他一些问题,但对我来说没有任何效果。 当然,出于安全原因,我更改了密钥。 Traceback(最近一次调用最后一次):File"

  • 我有一个基于Spring Web model view controller(MVC)框架的项目。Spring Web模型-视图-控制器(MVC)框架的版本是3.2.8 我有这个控制器 这个URL一切正常:

  • 目前从Angular JS controller中,我试图将JSON数据发送到后端服务。但是我有400个错误的请求错误。 在Controller中,我试图通过http服务发送数据,如下所示:

  • 我得到了这个错误,有什么想法会导致它吗?我试图发送一个DTO,它有一个扩展抽象类的对象列表,我想这个问题可能是因为DTO中的列表,还是因为抽象类的子类?

  • 在月食中, ”org.apache.axis2。AxisFault:传输错误: 403错误:禁止”试图从svn检出项目时发生错误。我不能实现这个错误,因此我检查了从终端使用"svn-co"命令的项目。 但是,有趣的是,当我试图在Eclipse中运行应用程序时,在输入凭据(用户名和密码)并按下“登录”按钮之后,我又遇到了相同的错误。响应是JFrame上的无效用户名/密码,但凭据没有错误。这只发生在日

  • Errors 错误 Library routines must often return some sort of error indication to the caller. As mentioned earlier, Go’s multivalue return makes it easy to return a detailed error description alongside th

  • 本章概述了Google API错误模型,以及开发人员如何正确生成和处理错误的一般指南。 Google API使用简单的协议无关错误模型,这使我们能够在不同的API,API协议(如gRPC或HTTP)以及错误上下文(例如,异步,批处理或工作流错误)中获得一致的体验。 错误模型 错误模型在逻辑上由google.rpc.Status定义,当API发生错误时,返回一个Status实例给客户端。 以下代码段

  • 5.4. 错误 在Go中有一部分函数总是能成功的运行。比如strings.Contains和strconv.FormatBool函数,对各种可能的输入都做了良好的处理,使得运行时几乎不会失败,除非遇到灾难性的、不可预料的情况,比如运行时的内存溢出。导致这种错误的原因很复杂,难以处理,从错误中恢复的可能性也很低。 还有一部分函数只要输入的参数满足一定条件,也能保证运行成功。比如time.Date函数