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

异常:401未授权错误|com.google.api.client.auth.oauth2.TokenResponseException:401未经授权

梁丘弘
2023-03-14

我的代码:GoogleCredential凭据

    try {
        // Authorize the request.
        credential = new GoogleCredential.Builder()
                .setTransport(HTTP_TRANSPORT)
                .setJsonFactory(JSON_FACTORY)
                .setServiceAccountId(serviceAccId)
                .setServiceAccountPrivateKeyFromP12File(certFilePath)
                .setServiceAccountScopes(Lists.newArrayList(YouTubeScopes.YOUTUBE))
                .setServiceAccountUser(emailId)
                .build();

credential.refreshToken()

错误日志:

Error |
Exception: 401 Unauthorized
Error |
com.google.api.client.auth.oauth2.TokenResponseException: 401 Unauthorized
Error |
    at com.google.api.client.auth.oauth2.TokenResponseException.from(TokenResponseException.java:105)
Error |
    at com.google.api.client.auth.oauth2.TokenRequest.executeUnparsed(TokenRequest.java:287)
Error |
    at com.google.api.client.auth.oauth2.TokenRequest.execute(TokenRequest.java:307)
Error |
    at com.google.api.client.googleapis.auth.oauth2.GoogleCredential.executeRefreshToken(GoogleCredential.java:384)
Error |
    at com.google.api.client.auth.oauth2.Credential.refreshToken(Credential.java:489)
Error |
    at com.google.api.client.auth.oauth2.Credential$refreshToken.call(Unknown Source)
Error |
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45)
Error |
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
Error |
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:112)
Error |
    at viewlift.YouTubePublishService.authorizeCredentials(YouTubePublishService.groovy:82)
Error |
    at viewlift.YouTubePublishService$$FastClassBySpringCGLIB$$48c3206b.invoke(<generated>)
Error |
    at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
Error |
    at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:708)
Error |
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
Error |
    at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:98)
Error |
    at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:262)
Error |
    at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:95)
Error |
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
Error |
    at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:644)
Error |
    at viewlift.YouTubePublishService$$EnhancerBySpringCGLIB$$6e11774.authorizeCredentials(<generated>)
Error |
    at viewlift.YouTubePublishService$authorizeCredentials.call(Unknown Source)
Error |
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45)
Error |
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
Error |
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:124)
Error |
    at com.viewlift.ViewLiftUtilsService.createSocialAccount(ViewLiftUtilsService.groovy:128)
Error |
    at com.viewlift.ViewLiftUtilsService$$FastClassBySpringCGLIB$$53f6d4a5.invoke(<generated>)
Error |
    at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
Error |
    at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:708)
Error |
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
Error |
    at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:98)
Error |
    at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:262)
Error |
    at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:95)
Error |
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
Error |
    at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:644)

创建服务号的步骤:

  1. 我在凭据中的oauth 2.0中创建了一个Web应用程序
  2. 然后我用客户端ID创建了一个服务号
  3. 现在我正在使用这个服务号和从它生成的p12证书来验证和创建Google凭据的对象
  4. 一旦刷新令牌,我就给了我401例外。

在这种情况下,任何帮助都会受到感激

共有1个答案

孔驰
2023-03-14

YouTubeAPI不支持服务帐户身份验证。

变通方法,您需要切换到 Oauth2 并对代码进行身份验证一次,并保存刷新令牌以供以后使用。刷新令牌可能会过期,但它不会那么频繁,但您必须观看它,如果它确实过期,则必须重新验证您的代码。

YouTube数据API支持OAuth 2.0协议,用于授权访问私人用户数据。

服务帐户流支持不访问用户信息的服务器到服务器的交互。但是,YouTube数据API不支持此流。因为没有办法将服务帐户链接到YouTube帐户

 类似资料:
  • 我想使用爪哇谷歌驱动器API。我尝试了这段代码: 但是我得到了这个错误: 我使用以下配置: 你能告诉我怎么解决这个问题吗?

  • 我尝试了这里给出的例子。 https://developers.google.com/sheets/quickstart/java 它给了我这个例外- 我已经给了它所有必要的许可。 我使用的是表单api版本v4 更新- 如果我在示例中传递而不是,那么它会给我这个响应。 变化- 响应 - 我从这个链接得到了进一步的帮助来解决< code>400 -无法解析范围:类数据!A2:A4" 400错误请求解

  • 我试图测试Firebase Cloud messaging APIs,因为控制台没有提供所有功能(特别是当应用程序在后台时定制通知)。但由于某些原因,我无法让它工作,它总是显示401错误。我调查了出现这种情况的原因,并在重新生成新的服务器密钥后进行了尝试,但错误仍然存在。令人惊讶的是,当我生成一个新的服务器密钥时,它没有反映在Firebase控制台中,它将服务器密钥显示为空。此外,我尝试添加我的I

  • Microsoft.Graph REST.API 我试图通过https://graph.microsoft.com/v1.0/me从graph.api获得有关我的信息 我也在这里检查这个其他主题,但我找不到像我一样的错误

  • 我想使用服务帐户实现谷歌表API请求。我创建了这个代码: 但是我得到了这个错误: com.google.api.client.auth.oauth2.TokenResponseException: 401 未经授权 在这个方法中 你知道我该如何解决这个问题吗?

  • null null 使用NodePort服务公开Keycloak。 应用程序使用istio入口网关公开。 Keycloak服务器版本:9.0.0。