Я работал над небольшим скриптом для сбора данных канала YouTube, и мой Google OAuth 2.0 не работает.
$validate = "https://accounts.google.com/o/oauth2/auth?client_id=242340718758-65veqhhdjfl21qc2klkfhbcb19rre8li.apps.googleusercontent.com&redirect_uri=http://conor1998.web44.net/php/oauth.php&scope=https://www.googleapis.com/auth/yt-analytics.readonly&response_type=code&access_type=offline";
echo "<a href='$validate'>Login with Google for advanced analytics</a>";
if(isset($_GET['code'])) {
// try to get an access token
$code = $_GET['code'];
$url = 'https://accounts.google.com/o/oauth2/token?code='.$code.'&client_id=242340718758-65veqhhdjfl21qc2klkfhbcb19rre8li.apps.googleusercontent.com&client_secret={secret}&redirect_uri=http://conor1998.web44.net/php/oauth.php&grant_type=authorization_code';
$url = urlencode($url);
header('Location: $url');
}$response = file_get_contents($url);
$response = json_decode($response);$channel_data = file_get_contents('https://www.googleapis.com/youtube/analytics/v1/reports?ids=channel==mine&start-date=2014-08-01&end-date=2014-09-01&metrics=views&key=AIzaSyDTxvTLWXStUrhzgCDptVUG4dGBCpyL9MY?alt=json');
$channel_data = json_decode($channel_data, true);
echo "<br />";
var_dump($channel_data);
echo "<br />";
Я понятия не имею, почему это не работает. Я чувствую, что это в основном из-за моей цели — получить маркер аутентификации для пользователя, чтобы я мог получить его данные на YouTube. Любая помощь будет оценена
Код, который вы получаете с сайта авторизации, не является токеном доступа! Ты должен обменять его на обновления и получить токены (см. № 4).
Вы должны выполнить запрос POST для https://accounts.google.com/o/oauth2/token чтобы получить свои токены. Он не работает через GET (как вы можете увидеть, нажав на ссылку).
Других решений пока нет …