i already opened yesterday a topic for my questions about hwioauthbundle in symfony2. Symfony2 HWIOauthBundle error with response
Thanks to stloyd for his answer, this helped me to figure it out how to use the bundle for getting access to linkedin.
I am trying now to get not only the formattedname from linkedin but also other informations like educations, skill s.o.
I am not sure if this is generally possible with HwioAuth? That is my config.yml
hwi_oauth:
firewall_name: main
resource_owners:
linkedin:
type: linkedin
client_id: %linkedin_client_id%
client_secret: %linkedin_client_secret%
scope: r_fullprofile
infos_url: 'https://api.linkedin.com/v1/people/~:(id,educations,languages,skills)?format=json'
scope: 'r_fullprofile'
paths:
educations: educations
languages: languages
skills: skills
That is my security.yml:
providers:
....
my_custom_hwi_provider:
id: linkedin.oauth_user_provider
firewalls:
main:
...
oauth:
resource_owners:
linkedin: "/login/check-linkedin"
login_path: /login
failure_path: /login
oauth_user_provider:
service: linkedin.oauth_user_provider
This is my service class Provider:
<?php
namespace XXXX\UtilBundle\Util\OAuthProvider;
use HWI\Bundle\OAuthBundle\Security\Core\User\OAuthUserProvider;
use HWI\Bundle\OAuthBundle\OAuth\Response\UserResponseInterface;
class Provider
{
protected $session, $doctrine;
public function __construct($session, $doctrine) {
$this->session = $session;
$this->doctrine = $doctrine;
}
public function loadUserByOAuthUserResponse(UserResponseInterface $response)
{
//data from LINKEDIN response
var_dump($response);
exit;
}
}
As you see i give_out the json what i get from linkedin. Hier is probally the response and the fields for educations, skills are empty!
class HWI\Bundle\OAuthBundle\OAuth\Response\PathUserResponse#694 (4) {
protected $paths =>
array(8) {
'identifier' =>
string(2) "id"
'nickname' =>
string(13) "formattedName"
'realname' =>
string(13) "formattedName"
'email' =>
string(12) "emailAddress"
'profilepicture' =>
string(10) "pictureUrl"
'educations' =>
string(10) "educations"
'languages' =>
string(9) "languages"
'skills' =>
string(6) "skills"
}
protected $response =>
array(1) {
'id' =>
string(10) "XYXYXYXYXYXYXY"
}
protected $resourceOwner =>
class HWI\Bundle\OAuthBundle\OAuth\ResourceOwner\LinkedinResourceOwner#699 (8) {
protected $options =>
array(8) {
'authorization_url' =>
string(49) "https://www.linkedin.com/uas/oauth2/authorization"
'access_token_url' =>
string(47) "https://www.linkedin.com/uas/oauth2/accessToken"
'infos_url' =>
string(81) "https://api.linkedin.com/v1/people/~:(id,educations,languages,skills)?format=json"
'csrf' =>
bool(true)
'client_id' =>
string(12) "XYXYXYXYXYXYXY"
'client_secret' =>
string(16) "XYXYXYXYXYXYXY"
'scope' =>
string(29) "r_fullprofile"
'options' =>
array(0) {
...
}
}
protected $paths =>
array(8) {
'identifier' =>
string(2) "id"
'nickname' =>
string(13) "formattedName"
'realname' =>
string(13) "formattedName"
'email' =>
string(12) "emailAddress"
'profilepicture' =>
string(10) "pictureUrl"
'educations' =>
string(10) "educations"
'languages' =>
string(9) "languages"
'skills' =>
string(6) "skills"
}
protected $defaultOptions =>
array(6) {
'client_id' =>
NULL
'client_secret' =>
NULL
'infos_url' =>
NULL
'user_response_class' =>
string(54) "HWI\Bundle\OAuthBundle\OAuth\Response\PathUserResponse"
'scope' =>
NULL
'csrf' =>
bool(false)
}
protected $httpClient =>
class Buzz\Client\Curl#700 (7) {
private $lastCurl =>
resource(286) of type (curl)
protected $options =>
array(2) {
...
}
protected $ignoreErrors =>
bool(true)
protected $maxRedirects =>
int(5)
protected $timeout =>
int(5)
protected $verifyPeer =>
bool(true)
protected $proxy =>
NULL
}
protected $name =>
string(8) "linkedin"
protected $state =>
NULL
protected $storage =>
class HWI\Bundle\OAuthBundle\OAuth\RequestDataStorage\SessionStorage#701 (1) {
private $session =>
class Symfony\Component\HttpFoundation\Session\Session#220 (3) {
...
}
}
public $httpUtils =>
class Symfony\Component\Security\Http\HttpUtils#230 (2) {
private $urlGenerator =>
class Symfony\Bundle\FrameworkBundle\Routing\Router#233 (9) {
...
}
private $urlMatcher =>
class Symfony\Bundle\FrameworkBundle\Routing\Router#233 (9) {
...
}
}
}
protected $oAuthToken =>
class HWI\Bundle\OAuthBundle\Security\Core\Authentication\Token\OAuthToken#696 (11) {
private $accessToken =>
string(179) "XYXYXYXYXYXYXY"
private $rawToken =>
array(2) {
'expires_in' =>
int(5183807)
'access_token' =>
string(179) "XYXYXYXYXYXYXYXY"
}
private $refreshToken =>
NULL
private $expiresIn =>
int(5183807)
private $createdAt =>
int(1378302276)
private $tokenSecret =>
NULL
private $resourceOwnerName =>
NULL
private $user =>
NULL
private $roles =>
array(0) {
}
private $authenticated =>
bool(false)
private $attributes =>
array(0) {
}
}
}
In protected $oAuthToken => is the value private $authenticated => bool(false)
Am i authenticated? And how can i access other fields with r_fullprofile as scope from Linkedin?
regards
Look at this LinkedIn API client and its first example. You fetch stuff by
$linkedIn->api('v1/people/~:(firstName,lastName)');
Also, have a look at the API documentation. It states clearly what fields you can fetch and how.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With