【问题标题】:Save object within an array from api response从 api 响应中保存数组中的对象
【发布时间】:2018-10-26 18:34:52
【问题描述】:

我正在使用 laravel 中的社交名流调用 LinkedIn 的 API 并得到以下响应:

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;

但我很难过!

非常感谢所有帮助!

【问题讨论】:

    标签: php laravel linkedin-api


    【解决方案1】:

    AbstractUserTwo\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']);
    

    【讨论】:

    • 感谢您的回复-
    • 如果回答有帮助 - 请随时接受。它将提高您的回购并帮助其他 SO 访问者。
    • 我正在努力实现这一点 - 我想创建一个新用户并将 publicProfileUrl 保存在 $user->linkedin = ......写这个?
    • = $linkedin_user->getRaw()['publicProfileUrl']?
    • 英雄。谢谢!回答接受。如果我想获得隐藏在职位中的公司名称值怎么办。鉴于有两个多个值存储为“名称”,您将如何访问它?
    猜你喜欢
    • 1970-01-01
    • 2017-03-03
    • 2021-07-23
    • 2021-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-02
    相关资源
    最近更新 更多