0

ユーザー登録時にソーシャルネットワークから性別情報を取得することに興味があるため、ネイティブの Laravel ソーシャライトプロバイダーに性別マッピングがないことに気付きました。

GoogleProvider.php

protected function mapUserToObject(array $user)
    {
        return (new User)->setRaw($user)->map([
            'id' => $user['id'], 'nickname' => array_get($user, 'nickname'), 'name' => $user['displayName'],
            'email' => $user['emails'][0]['value'], 'avatar' => array_get($user, 'image')['url'],
        ]);
    }

したがって、GoogleProvider.php は vendor フォルダーにあるため、上記のメソッドを編集して性別フィールドをマッピングすることはできません。

問題は、Laravel が提供するさまざまなソーシャル プロバイダーで mapUserToObject をオーバーライドするにはどうすればよいかということです。

または、そのような場合に推奨されるアプローチは何ですか?

4

1 に答える 1

1

Googleが性別フィールドを渡すと、次のようにアクセスできるはずです...

$user = Socialite::driver('google')->user();
echo $user['gender'];
于 2016-03-22T15:48:32.043 に答える