2012-06-06 2 views
3

Я знаю, что в SO есть много подобных вопросов, но я пробовал эти решения часами, но они не работали для меня. Я всегда получаю { "error" : "unauthorized_client" }". Я хочу программно обновить мой accesstoken, чтобы использовать Youtube API. Я уже приобрел refreshtoken.Проверка подлинности Google из PHP

Это то, что I've придумали:

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_POSTFIELDS, array(
'client_secret' => '<mysecret>', 
'grant_type' => 'refresh_token', 
'refresh_token' => '<my_refresh_token>', 
'client_id' => '<my_client_id>.apps.googleusercontent.com', 
'redirect_url'=>'<my_redirect_uri>' 
)); 
curl_setopt($ch, CURLOPT_URL, 'https://accounts.google.com/o/oauth2/token'); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 
echo var_dump(curl_exec($ch)); 

Что случилось с ним?

+0

PS: Получение нового маркера здесь прекрасно работает: https://code.google.com/oauthplayground/ –

+0

нет идей? Я действительно не знаю, что с этим случилось ... –

ответ

2

Параметры URL и запроса, которые вы указали, выглядят правильно. Похоже, эта ошибка возникла бы, если client_id, который вы предоставили для создания новых токенов, отличается от client_id, предоставленного для получения refresh_token.

Одна вещь, которая может случиться, заключается в том, что если вы создали access_token и refresh_token с помощью игровой площадки Google OAuth, а затем попытаетесь использовать этот refresh_token для создания новых токенов - это не сработает. Игровая площадка Google OAuth использует разные client_ids для выполнения этого запроса, и это, безусловно, приведет к ошибке «unauthorized_client», которую вы зарегистрировали.

Temboo имеет очень краткую и удобную в использовании библиотеку OAuth для Google. Вы можете посмотреть здесь: https://www.temboo.com/library/Library/Google/OAuth/.

(Полное раскрытие: я работаю в Temboo)