ユーザー情報の入ったAPIをバッチで使ったり
自分のサービスから動画アップロードするときにいちいち認証画面を通したくない場合などに使えるかと思います
やってることは単純で、リフレッシュトークンをハードコーディングしておいて
API呼ぶときにリフレッシュトークンからアクセストークンを取得してそれを使うだけです
*リフレッシュトークンの取得方法
前準備としてAPI Consoleから
・クライアントID
・リダイレクトURL
・クライアントシークレット
・APIキー
を取得しておく
1.
https://accounts.google.com/o/oauth2/auth?client_id=[クライアントID]&redirect_uri=[リダイレクトURL]&scope=https://www.googleapis.com/auth/youtube&response_type=code&approval_prompt=force&access_type=offline
をブラウザでたたいて、OAuth認証したいアカウントでログイン、認証する
2.
真っ白な画面になるが、そのときのURLのcodeをコピーしておく
3.
ターミナルで
curl -d "client_id=[クライアントID]&client_secret=[クライアントシークレット]&redirect_uri=[リダイレクトURL]&grant_type=authorization_code&code=[さっき取得したcode]" https://accounts.google.com/o/oauth2/token
を実行
4.
{
"access_token" : "hogehogehogehogehoge",
"token_type" : "Bearer",
"expires_in" : 3600,
"refresh_token" : "hogehogehogehogehoge"
}
と言った感じでrefresh_tokenが取得できるのでこれをハードコーディングする
こんな感じでcurlでも確認できます
1.
ターミナルで
curl -d "client_id=[クライアントID]&client_secret=[クライアントシークレット]&refresh_token=[さっき取得したrefresh_token]&grant_type=refresh_token" https://accounts.google.com/o/oauth2/token
を実行
2.
{
"access_token" : "hogehogehogehogehoge",
"token_type" : "Bearer",
"expires_in" : 3600
}
このaccess_tokenを使用して
curl -i https://www.googleapis.com/youtube/v3/channels?part=snippet\&mine=true\&key=[APIキー] -H "Authorization: Bearer [取得したaccess_token]"
これでユーザー情報を含むデータも取得できます
ライブラリを使う場合は
ライブラリを使う場合は
$client = new Google_Client();
$client->setClientId(クライアントID);
$client->setClientSecret(クライアントシークレット);
$client->refreshToken(リフレッシュトークン);
$client->setDeveloperKey(APIキー);これでライブラリが勝手にアクセストークンを取得してくれます