Youtube oAuth 2.0 API永久代码检索令牌

时间:2016-05-03 13:59:05

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

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

那么可以允许访问一次,然后我们不需要再次获取代码来向网站访问者提供上传权限吗?

2 个答案:

答案 0 :(得分:2)

你应该按照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());

答案 1 :(得分:1)

尝试检查您是否按照此documentation中的步骤/流程进行操作。

<强> 1。将您的应用程序注册为已安装的应用程序

<强> 2。申请访问令牌

第3。用户同意决定

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

<强> 4。处理来自Google的回复

<强> 5。用于刷新和访问令牌的Exchange授权代码

<强> 6。处理响应和存储令牌

此处,Google会通过返回包含短期访问令牌和刷新令牌的JSON对象来响应您的POST请求。

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

NOte:您的应用程序应将这两个值存储在安全的位置,   可以在不同调用之间访问的长期位置   你的申请。刷新令牌使您的应用程序能够   获取新的访问令牌(如果您已到期的那个)。因此,   如果您的应用程序丢失了刷新令牌,则用户需要   重复OAuth 2.0同意流程,以便您的应用程序可以获得   一个新的刷新令牌。

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

  

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

     
      
  • 用户已撤销访问权限。

  •   
  • 该令牌已使用六个月。

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

  •