Ok so I’ve got the following code now:
[code]<?php
$client_id = “lqhpxo5cq53rbp2pzmb71qjlusqsw2”;
$secret_id = “MYSECRETID”;
$keys = false;
if (file_exists(DIR . ‘/auth.json’)) {
$keys = json_decode(file_get_contents(DIR . ‘/auth.json’));
}
$generate_token = true;
if ($keys) {
// validate the token
$ch = curl_init('https://id.twitch.tv/oauth2/validate');
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: OAuth ' . $keys->access_token
));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$r = curl_exec($ch);
$i = curl_getinfo($ch);
curl_close($ch);
if ($i['http_code'] == 200) {
// the token appears good
$generate_token = false;
// optional to check the expires
$data = json_decode($r);
if (json_last_error() == JSON_ERROR_NONE) {
if ($data->expires_in < 3600) {
// less than an hour left
// make a new token
echo 'Token close to expire. Regenerate';
$generate_token = true;
}
} else {
echo 'Failed to parse JSON. Assume dead token';
$generate_token = true;
}
}
} else { $generate_token = true; }
if ($generate_token) {
$ch = curl_init(‘https://id.twitch.tv/oauth2/token’);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, array(
‘client_id’ => $client_id,
‘client_secret’ => $secret_id,
‘grant_type’ => “client_credentials”
));
$r = curl_exec($ch);
$i = curl_getinfo($ch);
curl_close($ch);
if ($i['http_code'] == 200) {
$data = json_decode($r);
if (json_last_error() == JSON_ERROR_NONE) {
echo 'Got token';
print_r($data);
// store the token for next run
file_put_contents(__DIR__ . '/auth.json', $r, JSON_PRETTY_PRINT);
} else {
echo 'Failed to parse JSON';
}
} else {
echo 'Failed with ' . $i['http_code'] . ' ' . $r;
}
} else {
echo ‘Token OK’;
print_r($keys);
}
$user = ‘raythgaming’;//Streamers username
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, “https://api.twitch.tv/helix/streams?user_login=$user”);//Endpoint
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
“Client-ID: $client_id”,
"Authorization: Bearer "+$keys->access_token
));
$profile_data = json_decode(curl_exec($ch), true);
curl_close($ch);
print_r($profile_data);
if (!isset($profile_data[‘data’][0])) {
$live = 0;//Not live
} else {
$live = 1;//Is live
}
if ($live == 1) {
$title = $profile_data[‘data’][0][‘title’];
$viewer_count = $profile_data[‘data’][0][‘viewer_count’];
$game_id = $profile_data[‘data’][0][‘game_id’];
$went_live_at = DateTime::createFromFormat(“Y-m-d H:i:s”, date(“Y-m-d H:i:s”, strtotime($profile_data[‘data’][0][‘started_at’])))->format(‘Y-m-d H:i:s’);
$started = date_create($went_live_at);
$now = date_create(date(‘Y-m-d H:i:s’));
$diff = date_diff($started, $now);
$hours = $diff->h;
$minutes = $diff->i;
echo “
$user is playing $game_name, started streaming $hours hours $minutes minutes ago and has $viewer_count viewers TITLE: $title”;
} else {
echo “
$user is not live”;
}
[/code]
I’m still getting no OAuth even though I have a token (I checked):
Token OKstdClass Object ( [access_token] => ******* [expires_in] => 5196723 [token_type] => bearer ) Array ( [error] => Unauthorized [status] => 401 [message] => OAuth token is missing )
raythgaming is not live