Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从java读取Google工作表时Google api重定向uri问题_Java_Google Api_Google Drive Api_Google Oauth_Google Api Java Client - Fatal编程技术网

从java读取Google工作表时Google api重定向uri问题

从java读取Google工作表时Google api重定向uri问题,java,google-api,google-drive-api,google-oauth,google-api-java-client,Java,Google Api,Google Drive Api,Google Oauth,Google Api Java Client,我正在使用OAuth2GoogleDrive API从Java中的google工作表中读取数据。 我在本地机器上有一个工作样本。但当我将其部署到远程服务器上时,在进行身份验证时,API返回一个URL,该URL将在浏览器中打开。 URL如下所示: https://accounts.google.com/o/oauth2/auth?access_type=online&approval_prompt=auto&client_id=my.client.id&redirect_u

我正在使用OAuth2GoogleDrive API从Java中的google工作表中读取数据。 我在本地机器上有一个工作样本。但当我将其部署到远程服务器上时,在进行身份验证时,API返回一个URL,该URL将在浏览器中打开。 URL如下所示:

https://accounts.google.com/o/oauth2/auth?access_type=online&approval_prompt=auto&client_id=my.client.id&redirect_uri=http://**localhost:58305**/Callback&response_type=code&scope=https://www.googleapis.com/auth/drive
显然,这个URL不会在远程服务器上打开,因为没有本地主机

生成oauth客户端id时我的google开发者控制台配置:

  • 应用程序类型:Web应用程序或其他

  • 授权JavaScript来源:我的远程服务器来源

  • 授权重定向URI:我的远程服务器页面

  • 当应用程序类型为“其他”时,身份验证将在我的本地计算机上成功完成。 由于身份验证URL中的localhost字符串,在远程服务器上部署时也无法进行身份验证

    另一方面,当应用程序类型为Web application时,它会在本地主机和远程服务器上显示一个错误页面,即使我在上述选项中添加了正确的来源,该页面仍会出现如下错误:

    Error: redirect_uri_mismatch
    
    The redirect URI in the request, http://localhost:59363/Callback, does not match the ones authorized for the OAuth client. Visit https://console.developers.google.com/apis/credentials/oauthclient/my.client.id?project=my.project.id to update the authorized redirect URIs.
    
    我尝试了多个重定向URI选项。但它给出了同样的错误

  • 身份验证中是否有任何设置,我们可以在其中更改 修复本地主机:59363部分
  • 应用程序类型:web应用程序在必须时是否正确 将此部署到生产服务器上,作为应用程序类型:其他 对于已安装的应用程序

  • 您需要将重定向uri设置为java代码中google控制台中提供的uri

    看看

    您可以构建重定向url。目前您正在以localhost:58305/Callback的形式发送


    如果您使用了错误的API凭据类型,请更新它,它将正常工作


    对于您的项目,请转到:并选择OAUTH2凭据(客户端ID类型:OTHER)。

    我刚刚发布了一个关于此主题的问题:“编写Servlet以读取/写入Google Sheets数据”。你介意和我聊聊你是如何实现你的解决方案的吗?我在使用GoogleDriveAPI时也面临同样的问题。在应用程序类型为“其他”的本地主机上一切正常。在iis上发布时,会显示“错误:重定向\u uri\u不匹配”。使用应用程序类型时,web应用程序会显示“错误:重定向\u uri\u不匹配”也在本地。尝试了许多重定向uri选项,但仍然没有成功。正在搜索上周的解决方案。有人能告诉我应该提供什么重定向uri吗?因此,我使用了“其他”作为我的url。我使用了“其他”,但我仍然面临上述相同的问题。
        @Override
      protected String getRedirectUri(HttpServletRequest req) throws ServletException, IOException {
        GenericUrl url = new GenericUrl(req.getRequestURL().toString());
        url.setRawPath("/oauth2callback");
        return url.build();
      }