У стандартного клиента yii2 для логина через соцсети yii2-authclient есть замечательный простой плагин для github.
Как и у всех многих таких GitHub-OAuth клиентов, вместе с пользовательской информацией не приходит email. Это особенность непосредственно GitHub-a(http://stackoverflow.com/questions/24689889/the-accounts-github-package-is-causing-my-meteor-user-to-have-a-null-email).
Решается это просто.
В конфиге authClient добавляем нужный нам scope:
| 1 2 3 4 5 6 7 8 9 10 11 |         'authClientCollection' => [             'class' => 'yii\authclient\Collection',             'clients' => [                 'github' => [                     'class' => 'yii\authclient\clients\GitHub',                     'clientId' => 'YOUR_CLIENT_ID',                     'clientSecret' => 'YOUR_SECRET',                     'scope' => 'user' // user включает в себя требуемый user:email                 ],             ],         ], | 
В successCallback-функции делаем дополнительный API вызов на получение email-адресов(https://developer.github.com/v3/users/emails/#list-email-addresses-for-a-user):
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |     public function successCallback($client)     {         $attributes = $client->getUserAttributes();         // getting user email         try {             $emails = $client->api('user/emails');             foreach ($emails as $email) {                 if ($email['primary'] === true) {                     $attributes['email'] = $email['email'];                 }             }         } catch (\yii\authclient\InvalidResponseException $e) {             // no email :-(         }         // do other stuff with our data!     } | 
Собственно теперь, если API вызов прошёл успешно – в $attributes будет долгожданный email.

Link to this post!