php - 使用基于浏览器的 YouTube API 客户端身份验证时,oauth2 的重定向 URI 片段中有额外的字段

标签 php html redirect uri oauth-2.0

我正在尝试设置一种使用 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 的页面..

最佳答案

YouTube 有两种身份验证方法 - 客户端和服务器端。 (其实还有很多,其他的我没用过)

文档是 https://developers.google.com/youtube/2.0/developers_guide_protocol_oauth2但我会尝试解释您需要的部分。

“客户端”是您正在使用的 - 您基本上是通过 URL 发送给用户,让谷歌完成工作并取回访问 token 。

“服务器端”是您需要的(如您所猜)。要进行转换,而不是将用户发送到以“&response_type=token”结尾的 url,请将此位更改为“&response_type=code&access_type=offline”

当你接到回电时,你有 ?code=4/ux5gNj-_mIu4DOD_gNZdjX9EtOFf - 希望你能在 # 之前阅读它

然后您使用 POST 将此代码发送到 Google 服务器,它会以 JSON 格式发回 token 。取自该页面之前:

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,因为它需要您的 key (您不想通过 Javascript 透露)。

我会留给您去 Google 了解如何:

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

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

关于php - 使用基于浏览器的 YouTube API 客户端身份验证时,oauth2 的重定向 URI 片段中有额外的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12186151/

相关文章:

http - 如何重写 Squid-Cache 内部 URL?

PHP:第二个查询不起作用

PHP-Laravel 依赖注入(inject) : pass parameters to dependency constructor

php - 在使用它们之前是否有必要清理 session ?

php mpdf内存限制错误

php - CSS 下拉菜单 - 激活时移动页面上的所有内容

javascript - 如何指定要将单元格添加到的列

javascript - 导航栏悬停效果 - CSS

wordpress - .htaccess 重定向过多。将除 ip 之外的所有用户重定向到网站的不同部分

javascript - 站点地图、javascript 重定向和谷歌