来自服务器的 Google 身份验证

Posted

技术标签:

【中文标题】来自服务器的 Google 身份验证【英文标题】:Google authentication from server 【发布时间】:2017-09-14 19:32:29 【问题描述】:

我需要将视频上传到 youtube 到特定的 youtube 帐户。所以我需要验证我正在使用 java google lib。代码如下所示:

          Credential credential = new GoogleCredential.Builder()
            .setTransport(new ApacheHttpTransport())
            .setJsonFactory(new JacksonFactory())
            .setServiceAccountId("xxx@xx-app.iam.gserviceaccount.com")
            .setClientSecrets("xx@gmail.com", "xx")
            .setServiceAccountPrivateKeyFromP12File(new File("xx.p12"))
            .setServiceAccountScopes(scopes)
            .setServiceAccountUser("xx@gmail.com")
            .build();

          youtube = new YouTube.Builder(credential.getTransport(), credential.getJsonFactory(), credential).setApplicationName(
            "tellews-app").build();
          Video returnedVideo = videoInsert.execute();
          YouTube.Videos.Insert videoInsert = youtube.videos()
            .insert("snippet,statistics,status", videoObjectDefiningMetadata, mediaContent);
          Video returnedVideo = videoInsert.execute();

得到错误:

IOException: 401 Unauthorized "error" : "unauthorized_client", "error_description" : "Client is unauthorized to retrieve access tokens using this method."

也许有人看到我做错了什么

【问题讨论】:

【参考方案1】:

简单。

不要使用服务帐户 - 这不是他们的目的。

您需要为目标 YouTube 帐户获取访问令牌。最简单的方法是从 Oauth Playground 为该帐户获取一个 Refresh Token,并在需要时使用它来获取 Access Token。在How do I authorise an app (web or installed) without user intervention? (canonical ?) 中列举了执行此操作的步骤。在 cmets 中有一个 YouTube 视频的链接,该视频也解释了这些步骤。

【讨论】:

以上是关于来自服务器的 Google 身份验证的主要内容,如果未能解决你的问题,请参考以下文章

来自连接到 Node.js API 的移动客户端的社交身份验证

尽管 Google 帐户是所有者,但来自 Google 身份验证 Web api 的“错误 403:access_denied”

使用 google firebase 和 spring 进行身份验证

Google Adwords API 身份验证问题

Google Calendar API - 请求的身份验证范围不足

如何使用颤振在 django 中进行 google、facebook 身份验证