通过API将视频上传到Youtube,无需每次使用OAuth

通过API将视频上传到Youtube,无需每次使用OAuth,oauth,google-api,youtube-api,google-oauth,google-api-php-client,Oauth,Google Api,Youtube Api,Google Oauth,Google Api Php Client,我有一个PHP网站,比如为其他一些用户提供视频到我的youtube频道。我已经成功地安装了OAuth和Google API,将该网站的视频上传到我的youtube频道 我面临的问题是,我必须授权从网站上传的每个会话。因此,当我将链接交给其他人并要求他们上传时,他们将无法绕过OAuth并上传。(我不能提供我的证件) 我浏览了Google OAuth的PHP文档,但不太清楚。我猜我们必须在初始身份验证期间存储令牌,然后将其用于进一步的操作,但我们无法确切地知道如何做到这一点。有关如何执行此操作的任何

我有一个PHP网站,比如为其他一些用户提供视频到我的youtube频道。我已经成功地安装了OAuth和Google API,将该网站的视频上传到我的youtube频道

我面临的问题是,我必须授权从网站上传的每个会话。因此,当我将链接交给其他人并要求他们上传时,他们将无法绕过OAuth并上传。(我不能提供我的证件)

我浏览了Google OAuth的PHP文档,但不太清楚。我猜我们必须在初始身份验证期间存储令牌,然后将其用于进一步的操作,但我们无法确切地知道如何做到这一点。有关如何执行此操作的任何帮助/代码片段?

独立于其在YouTube API中的实现,将在资源所有者正确身份验证和授权后返回两个令牌(=在本例中,通道所有者=您)。这两种代币是:

  • 访问令牌。它用于查询API和执行操作(例如上传视频)。访问令牌会随着时间的推移而过期
  • 刷新令牌。它仅用于在旧的访问令牌过期时获取新的访问令牌。刷新令牌不能用于查询API
  • 只要服务器应用程序至少跟踪刷新令牌(因为它可以随时获取新的访问令牌),它就能够查询API,而无需资源所有者连续授权(直到资源所有者手动撤销应用程序对资源的访问)

    此时,拥有有效访问令牌的任何人都可以代表资源所有者执行操作(在其授予权限的范围内)。若你们希望你们的用户能够直接从他们自己的机器上传到你们的频道,理论上你们可以为他们提供访问和刷新令牌。然而,该程序有一些缺点:

  • API无法区分您和他们。如果你什么都能做,他们也能。他们所做的一切都是你的责任。这就是令牌被视为秘密的主要原因
  • 在任何时候,每个应用程序的每个资源所有者只有一个有效的访问令牌。如果一个客户端使用刷新令牌,那么所有其他客户端将发现自己被锁定,并且必须再次使用刷新令牌,从而再次锁定所有其他客户端,以此类推。这意味着操作一次只能由一个用户执行
  • go-to解决方案是实现您自己的身份验证机制,以保护对应用程序的访问,而应用程序又可以访问您的频道。我没有使用YouTube Data API v3上传视频的经验,因此我能想到的唯一方法是用户将视频上传到您的服务器,然后服务器将其转发到YouTube的上传服务器。当然,这意味着所有流量都是通过应用服务器路由的,这显然不是完美的。但这是另一个问题的另一个问题。

    独立于其在YouTube API中的实现,在资源所有者(在本例中,通道所有者=您)进行适当的身份验证和授权后,将返回两个令牌。这两种代币是:

  • 访问令牌。它用于查询API和执行操作(例如上传视频)。访问令牌会随着时间的推移而过期
  • 刷新令牌。它仅用于在旧的访问令牌过期时获取新的访问令牌。刷新令牌不能用于查询API
  • 只要服务器应用程序至少跟踪刷新令牌(因为它可以随时获取新的访问令牌),它就能够查询API,而无需资源所有者连续授权(直到资源所有者手动撤销应用程序对资源的访问)

    此时,拥有有效访问令牌的任何人都可以代表资源所有者执行操作(在其授予权限的范围内)。若你们希望你们的用户能够直接从他们自己的机器上传到你们的频道,理论上你们可以为他们提供访问和刷新令牌。然而,该程序有一些缺点:

  • API无法区分您和他们。如果你什么都能做,他们也能。他们所做的一切都是你的责任。这就是令牌被视为秘密的主要原因
  • 在任何时候,每个应用程序的每个资源所有者只有一个有效的访问令牌。如果一个客户端使用刷新令牌,那么所有其他客户端将发现自己被锁定,并且必须再次使用刷新令牌,从而再次锁定所有其他客户端,以此类推。这意味着操作一次只能由一个用户执行
  • go-to解决方案是实现您自己的身份验证机制,以保护对应用程序的访问,而应用程序又可以访问您的频道。我没有使用YouTube Data API v3上传视频的经验,因此我能想到的唯一方法是用户将视频上传到您的服务器,然后服务器将其转发到YouTube的上传服务器。当然,这意味着所有流量都是通过应用服务器路由的,这显然不是完美的。但这是另一个问题的另一个问题