拉拉维尔社交名媛 410 消失了 此资源在 v1 API 下不再可用



当我尝试通过LinkedIn api 登录时。我收到这些错误

客户端错误:"GET https://api.LinkedIn.com/v1/people/~:(id,名字,姓
氏,格式化名称,电子邮件地址,标题,位置,行业,公共配置文件网址,图片
网址,图片网址::(原始(("导致"410 Gone"响应:{ "错误代码":0, "消息": ">
此资源在 v1 API 下不再可用", ">
requestId": "56NEB1WQC2", "s (截断...(
 */
public function redirectToProvider()
{
    return Socialite::driver('linkedin')->redirect();
}
/**
 * Obtain the user information from GitHub.
 *
 * @return IlluminateHttpResponse
 */
public function handleProviderCallback()
{
    $userSocial = Socialite::driver('linkedin')->user();

    //check if user exists and log user in
    $user = User::where('email', $userSocial->email)->first();
    if($user){
        if(Auth::loginUsingId($user->id)){
           return redirect()->route('home');
        }
    }
 //else sign the user up
 $userSignup = User::create([
        'name' => $userSocial->name,
        'email' => $userSocial->email,
        'password' => bcrypt('1234'),
        'avatar'=> $userSocial->avatar,
        'linkedIn_profile'=> $userSocial->user['link'],
        'role_id' => '10'
    ]);

    //finally log the user in
    if($userSignup){
        if(Auth::loginUsingId($userSignup->id)){
            return redirect()->route('home');
        }
    }
}

}

社交名流问题 github 存储库

问题已解决
我已经更新了我的socialite/src/Two/LinkedInProvider.php文件:-

<?php
namespace LaravelSocialiteTwo;
use IlluminateSupportArr;
class LinkedInProvider extends AbstractProvider implements ProviderInterface
{
    /**
     * The scopes being requested.
     *
     * @var array
     */
    protected $scopes = ['r_liteprofile', 'r_emailaddress'];
/**
 * The separating character for the requested scopes.
 *
 * @var string
 */
protected $scopeSeparator = ' ';
/**
 * {@inheritdoc}
 */
protected function getAuthUrl($state)
{
    return $this->buildAuthUrlFromBase('https://www.linkedin.com/oauth/v2/authorization', $state);
}
/**
 * {@inheritdoc}
 */
protected function getTokenUrl()
{
    return 'https://www.linkedin.com/oauth/v2/accessToken';
}
/**
 * Get the POST fields for the token request.
 *
 * @param  string  $code
 * @return array
 */
protected function getTokenFields($code)
{
    return parent::getTokenFields($code) + ['grant_type' => 'authorization_code'];
}
/**
 * {@inheritdoc}
 */
protected function getUserByToken($token)
{
    $basicProfile = $this->getBasicProfile($token);
    $emailAddress = $this->getEmailAddress($token);
    return array_merge($basicProfile, $emailAddress);
}
/**
 * Get the basic profile fields for the user.
 *
 * @param  string  $token
 * @return array
 */
protected function getBasicProfile($token)
{
    $url = 'https://api.linkedin.com/v2/me?projection=(id,firstName,lastName,profilePicture(displayImage~:playableStreams))';
    $response = $this->getHttpClient()->get($url, [
        'headers' => [
            'Authorization' => 'Bearer '.$token,
            'X-RestLi-Protocol-Version' => '2.0.0',
        ],
    ]);
    return (array) json_decode($response->getBody(), true);
}
/**
 * Get the email address for the user.
 *
 * @param  string  $token
 * @return array
 */
protected function getEmailAddress($token)
{
    $url = 'https://api.linkedin.com/v2/emailAddress?q=members&projection=(elements*(handle~))';
    $response = $this->getHttpClient()->get($url, [
        'headers' => [
            'Authorization' => 'Bearer '.$token,
            'X-RestLi-Protocol-Version' => '2.0.0',
        ],
    ]);
    return (array) Arr::get((array) json_decode($response->getBody(), true), 'elements.0.handle~');
}
/**
 * {@inheritdoc}
 */
protected function mapUserToObject(array $user)
{
    $preferredLocale = Arr::get($user, 'firstName.preferredLocale.language').'_'.Arr::get($user, 'firstName.preferredLocale.country');
    $firstName = Arr::get($user, 'firstName.localized.'.$preferredLocale);
    $lastName = Arr::get($user, 'lastName.localized.'.$preferredLocale);
    $images = (array) Arr::get($user, 'profilePicture.displayImage~.elements', []);
    $avatar = Arr::first(Arr::where($images, function ($image) {
        return $image['data']['com.linkedin.digitalmedia.mediaartifact.StillImage']['storageSize']['width'] === 100;
    }));
    $originalAvatar = Arr::first(Arr::where($images, function ($image) {
        return $image['data']['com.linkedin.digitalmedia.mediaartifact.StillImage']['storageSize']['width'] === 800;
    }));
    return (new User)->setRaw($user)->map([
        'id' => $user['id'],
        'nickname' => null,
        'name' => $firstName.' '.$lastName,
        'first_name' => $firstName,
        'last_name' => $lastName,
        'email' => Arr::get($user, 'emailAddress'),
        'avatar' => Arr::get($avatar, 'identifiers.0.identifier'),
        'avatar_original' => Arr::get($originalAvatar, 'identifiers.0.identifier'),
    ]);
}

}

最新更新