使用thephpleague / oauth2-linkedin获取vanityName

时间:2019-08-12 14:22:50

标签: php symfony linkedin symfony4 linkedin-api

我正在尝试获取vanityName,以便可以与LinkedIn的URL连接以创建公共资料URL,但是我只能获得其他一些字段,例如姓氏,电子邮件,ID等。

我正在设置'scope' => 'r_basicprofile',但不确定是否将其放置在正确的位置。

已经尝试在'scope' => 'r_basicprofile'内和$ options内设置$provider = new LinkedIn([...])

$options = [
    'state' => 'OPTIONAL_CUSTOM_CONFIGURED_STATE',
    'scope' => ['r_liteprofile','r_emailaddress']
];

$authorizationUrl = $provider->getAuthorizationUrl($options);

我在做什么错了?

代码:

public function setLinkedin(Request $request)
    {
        $provider = new LinkedIn([
            'clientId' => 'clientIdHere',
            'clientSecret' => 'clientSecretHere',
            'redirectUri' => 'http://' . $request->getHost() . ':' . $request->getPort() . $this->generateUrl('vincular_linkedin'),
            'scope' => 'r_basicprofile'
        ]);

        if (!$request->get('code')) {

            $authUrl = $provider->getAuthorizationUrl();
            $this->get('session')->set('oauth2state', $provider->getState());
            header('Location: ' . $authUrl);
            exit;
        } elseif (!$request->get('state') || ($request->get('state') !== $this->get('session')->get('oauth2state'))) {

            $this->get('session')->remove('oauth2state');
            exit('Invalid state');
        } else {
            $token = $provider->getAccessToken('authorization_code', [
                'code' => $request->get('code')
            ]);


            try {
                $user = $provider->getResourceOwner($token);

                echo '<pre>';
                var_dump($user);
                echo '</pre>';
            } catch (Exception $e) {
                exit ($e);
            }

        }
        return new Response();
    }

我正在关注thisthis link

在PHP 7+中使用Symfony 4.3.3。

我的应用程序已经注册,但是我只有三个权限:r_emailaddress,r_liteprofile和w_member_social。我无法更改。

通过作曲者安装了LinkedIn API。

0 个答案:

没有答案