【问题标题】:Youtube oAuth 2.0 API permanent code to retrieve tokens用于检索令牌的 Youtube oAuth 2.0 API 永久代码
【发布时间】:2016-08-28 15:05:16
【问题描述】:

基本上,我的目标是制作一个表单,让我网站的每个访问者都可以将评论部分中的视频上传到我的 OWN 频道。目前我正在使用 YouTube OAuth 版本 3 API。问题是每 3600 秒,来自 YouTube 的代码就会过期,我们将被重定向到请求许可的 Google OAuth(例如:https://accounts.google.com/o/oauth2/auth?client_id=805j8tubb260venakqj8jq3f6hl9eluu.apps.googleusercontent.com)。而且每次按钮过期时,我们都需要手动点击“允许”按钮。

那么是不是可以允许访问一次,然后我们就不需要再取代码给网站访问者上传权限了?

【问题讨论】:

    标签: youtube youtube-api youtube-data-api


    【解决方案1】:

    您应该按照 KENdi 关于如何获取令牌的说明进行操作——他几乎直接从文档中提取了它。但是,您应该只需要这样做一次。诀窍是将refresh_token 保存在某处,然后在您要上传视频之前使用它来获取新的访问令牌。这是我快速而肮脏的 NodeJS 解决方案:

    function getAccessToken () {
        const options = {
        method: 'POST',
        uri: 'https://accounts.google.com/o/oauth2/token',
        form: {
            client_id: 'YOUR_CLIENT_ID',
            client_secret: 'YOUR_CLIENT_SECRET',
            refresh_token: 'YOUR_REFRESH_TOKEN',
            grant_type: 'refresh_token'
          }
        }
    
        return request(options)
            .then(body => JSON.parse(body));
    }
    
    getAccessToken.then((token) => uploadSomeYoutubeVideo());
    

    【讨论】:

    • 刷新令牌会过期吗?
    【解决方案2】:

    尝试检查您是否遵循此documentation 中的步骤/流程。

    1.将您的应用注册为已安装的应用

    2。请求访问令牌

    3.用户同意决定

    • 在此步骤中,用户决定是否授予您的应用程序以用户身份发出 API 请求的能力。 Google 的授权服务器会显示您的应用程序的名称以及它使用用户的授权凭据请求访问权限的 Google API 服务。然后,用户可以同意或拒绝授予对您的应用程序的访问权限。

    4.处理来自 Google 的响应

    5.交换刷新和访问令牌的授权码

    6.处理响应并存储令牌

    在这里,Google 将通过返回一个包含短期访问令牌和刷新令牌的 JSON 对象来响应您的 POST 请求。

    {
      "access_token" : "ya29.AHES6ZTtm7SuokEB-RGtbBty9IIlNiP9-eNMMQKtXdMP3sfjL1Fc",
      "token_type" : "Bearer",
      "expires_in" : 3600,
      "refresh_token" : "1/HKSmLFXzqP0leUihZp2xUt3-5wkU7Gmu2Os_eBnzw74"
    }
    

    注意:您的应用程序应将这两个值存储在一个安全的、 不同调用之间可访问的长寿命位置 您的应用程序。刷新令牌使您的应用程序能够 如果您拥有的访问令牌过期,则获取新的访问令牌。因此, 如果您的应用程序丢失了刷新令牌,用户将需要 重复 OAuth 2.0 同意流程,以便您的应用程序可以获得 一个新的刷新令牌。

    访问令牌会定期过期,因此需要刷新。当访问令牌过期时,您的应用程序可能能够使用刷新令牌来获取新的有效访问令牌。服务器端 Web 应用程序、已安装的应用程序和设备都在授权过程中获取刷新令牌。

    注意tokens might stop, no longer work or expire 如果:

    • 用户已撤销访问权限。

    • 令牌已六个月未使用。

    • 用户帐户已超过一定数量的令牌请求。

    【讨论】:

    • 您好,感谢您的回答。但实际上,问题是我不想每小时都同意我的网站。就我而言,访问者可以上传他们的视频并将其放在我的频道中。因此,每小时询问一次刷新令牌将是一个问题。
    • 我将 Google .NET API 用于我的类似应用程序,并且刷新是自动完成的。
    • @MikeMeinz 你好,迈克。 PHP是否也可以获取自动刷新令牌?你知道这个逻辑是如何工作的吗?
    • 对不起。我不使用 API 的 PHP 版本。
    猜你喜欢
    • 2011-09-11
    • 2023-04-10
    • 2012-01-29
    • 1970-01-01
    • 1970-01-01
    • 2015-08-29
    • 1970-01-01
    • 1970-01-01
    • 2018-01-31
    相关资源
    最近更新 更多