我正在使用 Twitch API 制作一个程序,该程序涉及获取用户的用户名和 OAuth 令牌。目前,我的网站有一个“与 Twitch 连接”按钮,它允许用户登录 twitch 并返回访问令牌(作为对我的 URL 的 GET 请求),我可以使用它来联系 API 并获取 OAuth 令牌。这是我对该部分的代码:
if ($_SERVER['REQUEST_METHOD'] == "GET") {
if (isset($_GET['code']) && !empty($_GET['code'])) {
$code = $_GET['code'];
//Getting OAuth
$params = array(
'client_id' => 'my_client_id',
'client_secret' => 'my_client_secret',
'grant_type' => 'authorization_code',
'redirect_uri' => 'http://mytwitchapp.com/register.php', //Not my actual url
'code' => $code
);
$oauthResult = post_url_contents("https://api.twitch.tv/kraken/oauth2/token", $params);
$json_decoded_oauthResult = json_decode($oauthResult, true);
$oauth = $json_decoded_oauthResult['access_token'];
}
}
这是我使用的 post_url_contents() 函数:
function post_url_contents($url, $fields) {
$fields_string = '';
foreach($fields as $key=>$value) { $fields_string .= $key.'='.urlencode($value).'&'; }
rtrim($fields_string, '&');
$ch = curl_init();
$timeout = 60;
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_POST, count($fields));
curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
//SSL certificates
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_CAINFO, getcwd() . "/cert/DigiCertGlobalRootCA.crt");
$result = curl_exec($ch);
curl_close($ch);
return $result;
}
上面的代码可以很好地获取 OAuth 密钥。我已经尝试将$params
数组提交到https://api.twitch.tv/kraken/
,我已经阅读过应该提供有关用户的顶级统计信息,但我得到的响应是You are being redirected
(“重定向”是指向http://twitch.tv/kraken的超链接)。
任何帮助是极大的赞赏!