https://developers.google.com/youtube/v3/guides/authentication
POST /o/oauth2/token HTTP/1.1
Host: accounts.google.com
Content-Type: application/x-www-form-urlencoded
client_id=21302922996.apps.googleusercontent.com&
client_secret=XTHhXh1SlUNgvyWGwDk1EjXB&
refresh_token=1/6BMfW9j53gdGImsixUH6kU5RsR4zwI9lUVX-tqf8JXQ&
grant_type=refresh_token
开发人员文档列出了在后端刷新access_token的方法。有没有一种方法可以通过前端javascript调用做到这一点?
如果您使用的是客户端web应用程序流,如果您使用在浏览器中运行的JavaScript编写代码,这是合适的,那么就没有办法返回刷新令牌并定期刷新它以获得访问令牌。accounts.google.com服务器不支持CORS,因此无法从JavaScript发送HTTPPOST刷新请求。
您可以利用approval_prompt=auto
参数行为,这意味着,如果用户先前已授权访问相同作用域的OAuth 2客户端id,则可以在没有任何用户干预的情况下请求新的访问令牌。因此,您可以无限期有效地获得新的访问令牌。
我强烈建议让Google API JavaScript客户端库为您处理此问题。除了文档中的示例之外,您还可以看看这个简单的示例,它显示了如何以只需要初始授权的方式处理OAuth2流。