gpt4 book ai didi

php - Laravel Socialite 扩展领域

转载 作者:搜寻专家 更新时间:2023-10-31 21:30:36 28 4
gpt4 key购买 nike

基本上我想从 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'),
]);
}

但随后链接将为“空”。

有人知道如何解决这个问题吗?

最佳答案

我目前已经解决了这个问题。

在 myproject/vendor/socialiteproviders/linkedin/src/Provider.php 中,我在 url 中添加了字段“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'),
]);
}

希望有人会觉得这很有用。

注意
这在供应商目录中!每当您对项目进行( Composer )更新时,都可以丢弃此代码。

关于php - Laravel Socialite 扩展领域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30393551/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com