YouTube OAuth 2.0 - GET Request getting NULL from var_dump()



我一直在使用YouTube OAuth 2.0,但我遇到了一些问题。我一直在使用这个例子,我已经到了对 Google 频道进行身份验证并使用代码重定向回来的阶段。

当尝试发送GET请求以从OAuth范围获取一些通道数据时,我得到"NULL"响应,我不确定为什么。

(验证包含工作请求(

echo "<a href='$validate'>Login with Google for advanced analytics</a>";

$channel_data = file_get_contents('https://www.googleapis.com/youtube/analytics/v1/reports?ids=channel%3D%3DMINE&start-date=2014-08-01&end-date=2014-09-01&metrics=views&key={api_key}');
$channel_data = json_decode($channel_data, true);
echo "<br />";
var_dump($channel_data);

它似乎在找到的示例请求中有效 https://developers.google.com/youtube/analytics/v1/

似乎是对如何实现OAuth 2.0的误解。

此分步说明是我链接的网站的摘要:

  1. 在开发人员控制台中为 Web 应用程序创建客户端 ID
  2. 让用户转到身份验证网址
  3. 完成该过程后,用户将被重定向到您指定的重定向 URI。
  4. 在此页面上,您的 PHP 脚本必须获取code -query ( $_GET['code'] (
  5. 接下来,您必须向提供访问令牌和刷新令牌的页面发出请求(包含代码(。访问令牌在 1 小时后过期,然后您必须使用刷新令牌获取一个新令牌
  6. 获得访问令牌后,即可开始发出 API 请求

在顶部链接的网站上,您可以找到详细说明。希望这对:)有所帮助


更新

为了交换令牌的代码,您必须执行 post 请求。我不认为这对file_get_contents有用.我建议在这里使用 curl。

此代码应该适合您,但未经测试:

$url = 'https://accounts.google.com/o/oauth2/token';
$postfields = [
    'code'=>'YOUR_CODE',
    'client_id'=>'YOUR_CLIENT_ID',
    'client_secret'=>'YOUR_CLIENT_SECRET',
    'redirect_uri'=>'YOUR_REDIRECT_URI',
    'grant_type'=>'authorization_code'
];

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_POST, count($postfields));
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($postfields));
$response = curl_exec($curl);
curl_close($curl);
$response = json_decode($response);

$response现在是一个具有键access_token, token_type, expires_in, refresh_token的关联数组。 token_type总是Bearerexpires_in总是3600。另外两个是重要的,您应该安全地存放它们!

您可以在开发者控制台中找到您的客户端 ID 和客户端密钥。

但请注意,在此示例中,SSL 验证被禁用。这意味着您的连接不安全。

相关内容

  • 没有找到相关文章

最新更新