我一直在使用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);
的示例请求
答案 0 :(得分:0)
这似乎是对how to implement OAuth 2.0的误解。
此分步说明是我链接的网站的摘要:
code
- 查询($_GET['code']
)在顶部链接的网站上,您会找到详细的说明。 希望这会有所帮助:)
的更新强>
为了交换令牌的代码,您必须执行发布请求。我认为这不适用于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
始终为Bearer
,expires_in
始终为3600
。另外两个是重要的,你应该安全地存储它们!
您可以在开发者控制台中找到您的客户端ID和客户端密码。
但请注意,在此示例中,ssl验证已禁用。这意味着您的连接不安全。