基本上我想从Linkedin获取用户个人资料链接。我使用Laravel Socialite和Socialite Providers从Linkedin获取信息。
当用户成功重定向回我的网站时,我已调试了这些信息:
User {#285 ▼
+token: "XXX"
+id: "XXX"
+nickname: null
+name: "XXX"
+email: "XXX"
+avatar: "XXX"
+"user": array:4 [▶]
}
所以我想用" public-profile-url"来扩展这些信息,这是来自Linkedin的基本档案字段。
我试图在" myproject / vendor / socialiteproviders / linkedin / src / Provider.php"中执行类似的操作:
/**
* {@inheritdoc}
*/
protected function mapUserToObject(array $user)
{
return (new User())->setRaw($user)->map([
'id' => $user['id'], 'nickname' => null,
'name' => $user['formattedName'], 'email' => $user['emailAddress'],
'avatar' => array_get($user, 'pictureUrl'),
'link' => array_get($user, 'publicProfileUrl'),
]);
}
但是,链接将是" null"。
有人知道如何解决这个问题吗?
答案 0 :(得分:1)
我目前已经解决了这个问题。
在myproject / vendor / socialiteproviders / linkedin / src / Provider.php中,我已将字段'public-profile-url'添加到网址:
/**
* {@inheritdoc}
*/
protected function getUserByToken($token)
{
$response = $this->getHttpClient()->get(
'https://api.linkedin.com/v1/people/~:(id,formatted-name,picture-url,email-address,public-profile-url)', [
'headers' => [
'Accept-Language' => 'en-US',
'x-li-format' => 'json',
'Authorization' => 'Bearer '.$token,
],
]);
return json_decode($response->getBody(), true);
}
执行此操作时,您可以访问用户数组中的“publicProfileUrl”字段,例如:
/**
* {@inheritdoc}
*/
protected function mapUserToObject(array $user)
{
return (new User())->setRaw($user)->map([
'id' => $user['id'], 'nickname' => null,
'name' => $user['formattedName'], 'email' => $user['emailAddress'],
'avatar' => array_get($user, 'pictureUrl'),
'profileUrl' => array_get($user, 'publicProfileUrl'),
]);
}
希望有人会觉得这很有用。
注意
这是在供应商目录中!每当您对项目进行(作曲家)更新时,都可以抛弃此代码。