php - Symfony2 HwioAuth: obteniendo la información completa de linkedin
symfony facebook login (1)
Mira este cliente API de LinkedIn y su primer ejemplo. Traes cosas por
$linkedIn->api(''v1/people/~:(firstName,lastName)'');
Además, echa un vistazo a la documentación de la API . Indica claramente qué campos puedes obtener y cómo.
Ya abrí ayer un tema para mis preguntas sobre hwioauthbundle en symfony2. Error de Symfony2 HWIOauthBundle con respuesta
Gracias a stloyd por su respuesta, esto me ayudó a descubrir cómo usar el paquete para obtener acceso a linkedin.
Ahora estoy tratando de obtener no solo el nombre formateado de linkedin sino también otras informaciones como educaciones, habilidades para
No estoy seguro si esto es generalmente posible con HwioAuth? Ese es mi 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
Ese es mi 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
Este es mi proveedor de clase de servicio:
<?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;
}
}
Como ves, le doy al json lo que recibo de linkedin. ¡Hier es probablemente la respuesta y los campos de educación, habilidades están vacías!
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) {
}
}
}
En protected $ oAuthToken => es el valor private $ authenticated => bool (false)
¿Estoy autenticado? ¿Y cómo puedo acceder a otros campos con r_fullprofile como alcance de Linkedin?
Saludos