Socialiteで各プロバイダーごとに取得できるユーザー詳細情報のまとめ

# はじめに
今回の記事は、Socialteでの認証方法が本題ではなく、認証成功後の取得情報を中心に触れていきます。
具体的には、認証成功後に取得できるユーザー情報が各プロバイダーによって異なるため、ユーザー情報の何が取得できるか纏めております。
取得項目を具体的にまとめた記事は今の所見かけていないので利用ケースはないかもしれないですが、認証後に会員登録の入力項目補完やテーブル追加などで役に立つのかなと思います。
※今回紹介するプロバイダーは、Google、Facebook、Twitter、Yahoo Japanです。

Socialiteとは何？、認証方法については下記記事に説明がありますので、ご興味のある方は見てみてください。

+ [Laravel 8.x Laravel Socialite](https://readouble.com/laravel/8.x/ja/socialite.html)
+ [LaravelでTwitter認証を実装する](https://qiita.com/tamakiiii/items/cd027580e1d86e2652d7)

# Google
個人情報に関する項目は伏せています。
user配下に詳細情報が入っているのを確認できます。

```
token: ****
refreshToken: null
expiresIn: ****
id: ****
nickname: ****
name: ****
email: ****
avatar: ****
user: array:12 [
    "sub" => ****
    "name" => ****
    "given_name" => ****
    "family_name" => ****
    "picture" => ****
    "email" => ****
    "email_verified" => true
    "locale" => "ja"
    "hd" => ****
    "id" => ****
    "verified_email" => true
    "link" => null
  ]
"avatar_original": ****
```

この後紹介するプロバイダでも共通でid、nickname、name、email、avatarは下記で取得可能。

```
$user->getId();
$user->getNickname();
$user->getName();
$user->getEmail();
$user->getAvatar();
```

# Facebook

```
token: ****
refreshToken: null
expiresIn: ****
id: ****
nickname: null
name: ****
email: ****
avatar: ****
user: [
  "name" => ****
  "email" => ****
  "id" => ****
]
"avatar_original": ****
"profileUrl": null
```

# Twitter

<details><summary>取得項目が多いので折りたたみにしています。</summary><div>

```php
token: ****
tokenSecret: ****
id: ****
nickname: ****
name: ****
email: ****
avatar: ****
user: [
  "id_str" => ****
  "entities" => [
    "description" => [
      "urls" => []
    ]
  ]
  "protected" => true
  "followers_count" => ****
  "friends_count" => ****
  "listed_count" => ****
  "created_at" => ****
  "favourites_count" => ****
  "utc_offset" => null
  "time_zone" => null
  "geo_enabled" => false
  "verified" => false
  "statuses_count" => ****
  "lang" => null
  "contributors_enabled" => false
  "is_translator" => false
  "is_translation_enabled" => false
  "profile_background_color" => ****
  "profile_background_tile" => false
  "profile_link_color" => ****
  "profile_sidebar_border_color" => ****
  "profile_sidebar_fill_color" => ****
  "profile_text_color" => ****
  "profile_use_background_image" => true
  "has_extended_profile" => true
  "default_profile" => true
  "default_profile_image" => true
  "following" => false
  "follow_request_sent" => false
  "notifications" => false
  "translator_type" => "none"
  "withheld_in_countries" => []
  "suspended" => false
  "needs_phone_verification" => false
  "url" => null
  "profile_background_image_url" => null
  "profile_background_image_url_https" => null
  "profile_image_url" => ****
  "profile_image_url_https" => ****
  "location" => ""
  "description" => ""
]
"avatar_original": ****
```
</div></details>

# Yahoo Japan

```
token: ****
refreshToken: ****
expiresIn: ****
id: ****
nickname: ****
name: ****
email: ****
avatar: null
user: [
  "sub" => ****
  "name" => ****
  "given_name" => ****
  "given_name#ja-Kana-JP" => ****
  "given_name#ja-Hani-JP" => ****
  "family_name" => ****
  "family_name#ja-Kana-JP" => ****
  "family_name#ja-Hani-JP" => ****
  "locale" => ****
  "email" => ****
  "email_verified" => true
  "birthdate" => ****
  "zoneinfo" => ****
  "nickname" => ****
  "picture" => ****
]
```

# まとめ
各プロバイダー共通で氏名やメールアドレスは基本取得可能、生年月日は取得できませんでした。
もしかしたら各プロバイダー先で登録しているアカウントによって取得情報が変わるかもしれないです。今回そこまで調査できず、とりあえず既に登録済みのアカウント情報からどこまで取得できるかをまとめました。取得範囲についてご存知の方がいましたら是非、教えてください！