Yahoo! API トークンによるユーザ情報の取得
アクセストークンの発行、ユーザ情報の取得
アクセストークンの発行
PHP
$ch = curl_init();
// URL指定
$url = 'https://auth.login.yahoo.co.jp/yconnect/v2/token';
curl_setopt($ch, CURLOPT_URL, $url);
// パラメタ設定
curl_setopt($ch, CURLOPT_POST, true);
// 認証タイプ authorization_code
$data['grant_type'] = 'authorization_code';
// Client ID
$data['client_id'] = 'xxx...xxx';
// Client Secret
$data['client_secret'] = 'xxx...xxx';
// リダイレクトURL(認可コード発行時に指定したコールバックURL)
$data['redirect_uri'] = 'https://example.com/callback';
// 認可コード
$data['code'] = 'xxxxxxxx';
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
// ヘッダ設定
$headers = [
'Content-type: application/x-www-form-urlencoded'
];
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$result = curl_exec($ch);
curl_close($ch);
if (! empty($result)) {
$response = json_decode($result, true);
}
レスポンス
Array
(
[access_token] => xxx...xxx
[token_type] => Bearer
[expires_in] => 3600
[id_token] => xxx...xxx
[refresh_token] => xxx...xxx
)
ユーザ情報の取得
以前はアクセストークンをPOSTで投げても動作したが、GETのみに変更された。
PHP
$ch = curl_init();
// アクセストークン
$data['access_token'] = 'xxx...xxx';
// URL指定
$url = 'https://userinfo.yahooapis.jp/yconnect/v2/attribute?' . http_build_query($data);
curl_setopt($ch, CURLOPT_URL, $url);
// ヘッダ設定
$headers = [
'Content-type: application/x-www-form-urlencoded'
];
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$result = curl_exec($ch);
curl_close($ch);
if (! empty($result)) {
$response = json_decode($result, true);
}
レスポンス
Array
(
[sub] => xxx...xxx
[given_name] => 太郎
[given_name#ja-Kana-JP] => タロウ
[given_name#ja-Hani-JP] => 太郎
[family_name] => 山田
[family_name#ja-Kana-JP] => ヤマダ
[family_name#ja-Hani-JP] => 山田
[gender] => male
[locale] => ja-JP
[email] => taro@example.com
[email_verified] => 1
[address] =>
[country] => jp
[postal_code] => 150XXXX
[region] => 東京都
[locality] => 新宿区
[formatted] => 東京都渋谷区
[birthdate] => 19XX
[zoneinfo] => Asia/Tokyo
[nickname] => taro
[picture] => https://xxx...xxx.yimg.jp/xxx...xxx/xxx...xxx.png
)