“refresh_token”在后台刷新“access_token”和“client_secrets.json”吗?

时间:2014-02-06 20:53:45

标签: c# .net youtube-api

最后,我使用新的NuGet使其与Youtube Data API V3.0一起工作。非常感谢你。我还有一个关于“access_token”的问题。

我们只能使用“access_token”一小时。我们是否必须每小时刷新一次“access_token”,或者“refresh_token”是否在背景中使用“client_secrets.json”自行创建?如果我必须自己刷新它,你能告诉我我可以使用的代码或文件吗?

非常感谢。

如果我使用错误的语法,我会道歉。

1 个答案:

答案 0 :(得分:0)

根据Google的Youtube Data API v3上的文档,您需要实现自己的oauth客户端。我假设您已经注册了您的应用程序并拥有client_id和client_secret。在向Google的API提出请求时需要这些。

首先,您需要加载https://accounts.google.com/o/oauth2/auth,因为这是Google的oauth2提供商。示例请求可能如下所示:

https://accounts.google.com/o/oauth2/auth?
  client_id=1084945748469-eg34imk572gdhu83gj5p0an9fut6urp5.apps.googleusercontent.com&
  redirect_uri=http%3A%2F%2Flocalhost%2Foauth2callback&
  scope=https://www.googleapis.com/auth/youtube&
  response_type=code&
  access_type=offline 

样本回复:

http://localhost/oauth2callback?code=4/ux5gNj-_mIu4DOD_gNZdjX9EtOFf

假设您的用户接受Google的访问权限,则您需要交换Google返回的授权码才能获得刷新和访问令牌。

您需要POST到此地址: https://accounts.google.com/o/oauth2/token

您的帖子数据将包含从上一个回复返回的代码,您的client_id,您的client_secret,您的redirect_uri和grant_type。

样本发布数据:

code=4/ux5gNj-_mIu4DOD_gNZdjX9EtOFf&
client_id=1084945748469-eg34imk572gdhu83gj5p0an9fut6urp5.apps.googleusercontent.com&
client_secret=hDBmMRhz7eJRsM9Z2q1oFBSe&
redirect_uri=http://localhost/oauth2callback&
grant_type=authorization_code

示例回复:

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

然后你应该存储你的access_token和refresh_token以供日后使用。 access_token在3600秒(1小时)内到期。

要刷新您的访问令牌,请发布以下内容:

client_id=21302922996.apps.googleusercontent.com&
client_secret=XTHhXh1SlUNgvyWGwDk1EjXB&
refresh_token=1/6BMfW9j53gdGImsixUH6kU5RsR4zwI9lUVX-tqf8JXQ&
grant_type=refresh_token

此处提供完整的开发人员文档:
https://developers.google.com/youtube/v3/guides/authentication