2

我正在尝试设置一种使用 YouTube API 将视频上传到 YouTube 的自动方式。该应用程序需要上传视频以供 YouTube 进行某些处理。目前,我正在设置 oauth2.0 部分,并且能够重定向用户以使用他们的信息登录。但是,当用户随后使用我指定的重定向 uri 重定向回我的站点时,我需要能够接受 URL 末尾的自定义字段。现在,Web 服务器只是将用户重定向到我想要的页面,但会删除 YouTube 返回的所有关于身份验证的信息。我根本不懂PHP,但认为它可能是解决这个问题的方法。本质上,我希望能够将用户重定向到网站上保留额外信息的页面,以便我可以使用它。谢谢你的帮助。

http://ocf.berkeley.edu/~gregory/youtubeTestCode/indexRedirect#access_token=ya29.AHES6ZS8kOZN2T59fKpoUE0t7roUXqTPWDAwTMvrhZ5TjlZO57JZNQ&token_type=Bearer&expires_in=3600

重定向格式为http://ocf.berkeley.edu/~gregory/youtubeTestCode/indexRedirect后跟 #access_token=ya9232.jdfka7327293&token_type=Bearer&expires_in=3600

但是,我没有包含此特定 URL 的页面..

4

1 回答 1

0

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 透露)。

我会把你留给谷歌如何:

  1. 在 PHP 中读取参数(提示 - 使用 $_GET['paramter name'])
  2. 使用 CURL 向 Google 发送 POST 消息。

另一种方法是查看 YouTube SDK for PHP - 这些是预先编写的库,其中包含 POST 和 GET 位。但这使用了一种叫做“Zend”的东西,它可能会变得复杂。https://developers.google.com/youtube/2.0/developers_guide_php

于 2012-08-29T21:26:30.270 回答