YouTube 有两种身份验证方法 - 客户端和服务器端。(实际上还有更多,但我从未使用过其他的)。
文档是https://developers.google.com/youtube/2.0/developers_guide_protocol_oauth2但我会尝试解释您需要的内容。
“客户端”是您正在使用的 - 您基本上通过 URL 发送用户并让谷歌完成工作并取回访问令牌。
“服务器端”是您需要的(如您所料)。要进行转换,而不是将用户发送到以“&response_type=token”结尾的 url,请将此位更改为“&response_type=code& access_type=offline”
当您收到回电时,您有 ?code=4/ux5gNj-_mIu4DOD_gNZdjX9EtOFFf - 希望您可以在 # 之前阅读此内容
然后,您使用 POST 将此代码发送到 Google 服务器,并以 JSON 格式发回令牌。之前取自该页面:
POST /o/oauth2/token HTTP/1.1
Host: accounts.google.com
Content-Type: application/x-www-form-urlencoded
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"
}
所以“相对”简单地改变,但你需要 PHP 部分来做 POST,因为它需要你的密钥(你不想通过 Javascript 透露)。
我会把你留给谷歌如何:
- 在 PHP 中读取参数(提示 - 使用 $_GET['paramter name'])
- 使用 CURL 向 Google 发送 POST 消息。
另一种方法是查看 YouTube SDK for PHP - 这些是预先编写的库,其中包含 POST 和 GET 位。但这使用了一种叫做“Zend”的东西,它可能会变得复杂。https://developers.google.com/youtube/2.0/developers_guide_php