3

SOには同様の質問がたくさんあることは知っていますが、これらのソリューションを何時間も試しましたが、うまくいきませんでした。私はいつもを取得し{ "error" : "unauthorized_client" }"ます。プログラムでアクセストークンを更新して、YoutubeAPIを使用したいと思います。私はすでにリフレッシュトークンを取得しています。

これは私が思いついたものです:

$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));

どうしたの?

4

1 に答える 1

2

あなたが示したURLとクエリパラメータは私には正しく見えます。新しいトークンを生成するために提供するclient_idが、refresh_tokenを取得するために提供するclient_idと異なる場合、このエラーが発生するようです。

GoogleのOAuthプレイグラウンドを使用してaccess_tokenとrefresh_tokenを生成し、そのrefresh_tokenを使用して新しいトークンを生成しようとすると、これは機能しない可能性があります。Google OAuthプレイグラウンドは、そのリクエストを行うためにさまざまなclient_idsを使用しています。これにより、文書化した「unauthorized_client」エラーが確実に発生します。

Tembooには、Google用の非常に簡潔で使いやすいOAuthライブラリがあります。https://www.temboo.com/library/Library/Google/OAuth/で確認できます。

(完全開示:私はTembooで働いています)

于 2013-04-11T15:48:21.327 に答える