Сохранить объект в массиве из ответа API - PullRequest
0 голосов
/ 16 мая 2018

Я звоню в API LinkedIn, используя socialite в laravel, и получаю следующий ответ:

Laravel\Socialite\Two\User Object
(
[token] => 
[refreshToken] => 
[expiresIn] => 
[id] => 
[nickname] => 
[name] => 
[email] => l
[avatar] => 
[user] => Array
    (
        [emailAddress] => 
        [firstName] =>
        [formattedName] =>
        [headline] =>
        [id] =>
        [industry] =>
        [lastName] =>
        [location] => Array
            (
                [country] =>
                    (
                        [code] =>
                    )
                [name] =>
            )
        [pictureUrl] =>
        [positions] => Array
            (
                [_total] => 1
                [values] => Array
                    (
                        [0] => Array
                            (
                                [company] => Array
                                    (
                                        [name] =>
                                    )
                                [id] =>
                                [isCurrent] =>
                                [location] => Array
                                    (
                                        [country] => Array
                                            (
                                                [code] =>
                                                [name] =>
                                            )
                                        [name] =>
                                    )
                                [startDate] => Array
                                    (
                                        [month] =>
                                        [year] =>
                                    )
                                [summary] => 
                                [title] => 
                            )
                    )
            )

        [publicProfileUrl] =>
        [summary] =>
[avatar_original] => 
)

Затем я сохраняю ответы в своей базе данных, но не могу понять, как правильно получить доступ к значениям для позиций, publicProfileUrl или сводки. Все остальные работают из коробки со светской со следующим:

        $user = User::where('provider_id', $linkedin_user->id)->first();

    if (!$user){
      $user = new User;
      $user->name = $linkedin_user->getName();
      $user->email = $linkedin_user->getEmail();
      $user->picture = $linkedin_user->getAvatar();
      $user->provider_id = $linkedin_user->getId();
      $user->access_token = $linkedin_user->token;
      $user->save();
    }

Я пытался добавить это:

$publicProfileUrl = array_get($linkedin_user, 'user.publicProfileUrl', null);

После этого:

$user = User::where('provider_id', $linkedin_user->id)->first();

И добавление этого перед сохранением пользователя:

$user->linkedin = $linkedin_user[user]->publicProfileUrl;

Но я в тупике!

Вся помощь очень ценится!

1 Ответ

0 голосов
/ 16 мая 2018

AbstractUser, который является родителем Two\User, имеет метод getRaw (https://github.com/laravel/socialite/blob/3.0/src/AbstractUser.php#L106),, который вернет вам простой массив:

$user = $linkedin_user->getRaw();
echo $user['publicProfileUrl'];
print_r($user['positions']);
...