基本上我的目标是创建一个表单,允许我网站的每个访问者将评论部分中的视频上传到我的OWN频道。目前,我正在使用YouTube OAuth版本3 API。问题是每隔3600秒,来自YouTube的代码将过期,我们将重定向到要求许可的Google OAuth(例如:https://accounts.google.com/o/oauth2/auth?client_id=805j8tubb260venakqj8jq3f6hl9eluu.apps.googleusercontent.com)。我们需要手动点击“允许”'每次按钮过期时按钮。
那么可以允许访问一次,然后我们不需要再次获取代码来向网站访问者提供上传权限吗?
答案 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。用户同意决定
<强> 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 如果:
用户已撤销访问权限。
该令牌已使用六个月。
用户帐户已超过一定数量的令牌请求。