Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.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
使用YouTube API V3 for Java,访问令牌总是在1小时内过期_Java_Youtube Data Api - Fatal编程技术网

使用YouTube API V3 for Java,访问令牌总是在1小时内过期

使用YouTube API V3 for Java,访问令牌总是在1小时内过期,java,youtube-data-api,Java,Youtube Data Api,我能够使用示例Java程序使用API V3将视频上传到YouTube 但是,oAuth2生成的访问令牌总是在一小时后过期。如何使用Java库刷新访问令牌,使其永不过期 我也有同样的事情要做(但是使用c#net)。 使用API,我无法获得刷新令牌 GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder( HTTP_TRANSPORT, JSON_FACTORY, clientSecrets

我能够使用示例Java程序使用API V3将视频上传到YouTube

但是,oAuth2生成的访问令牌总是在一小时后过期。如何使用Java库刷新访问令牌,使其永不过期


我也有同样的事情要做(但是使用c#net)。 使用API,我无法获得刷新令牌

GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder(
        HTTP_TRANSPORT, JSON_FACTORY, clientSecrets, scopes).setAccessType("offline").setApprovalPrompt("force").setCredentialDataStore(datastore)
        .build();
因此,我使用一个HTTPClient通过HTTP API请求Youtube API:

  • 根据请求将用户重定向到Google OAuth服务器
  • GoogleOAuth服务器返回一个代码
  • 您可以通过以下方式向Google OAuth发送帖子: 此代码
  • Google OAuth服务器为您提供一个访问令牌和 刷新令牌
  • 此时,我有一个刷新和一个用户访问令牌。 之后,我使用API刷新令牌(如果需要)并向Youtube发出请求


    我建议您帮助进行HTTP请求。

    终于找到了YouTube API V3的Java修复程序。在原始示例Java程序中,Auth.Java中需要进行更改。原文是:

    GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder(
            HTTP_TRANSPORT, JSON_FACTORY, clientSecrets, scopes).setCredentialDataStore(datastore)
            .build();
    
    我们还需要补充两件事:

  • setAccessType(“脱机”)
  • setApprovalPrompt(“强制”)
  • 因此,现在可以获得刷新令牌

    GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder(
            HTTP_TRANSPORT, JSON_FACTORY, clientSecrets, scopes).setAccessType("offline").setApprovalPrompt("force").setCredentialDataStore(datastore)
            .build();
    

    现在credential.getRefreshToken()将返回一个令牌,而不是null。credential.refreshttoken()将返回true而不是false。

    您需要获取
    刷新\u令牌
    我不太确定如何通过Java执行此操作,因此以下是文档: