2013-09-04 5 views
20

ho già aperto ieri un argomento per le mie domande su hwioauthbundle in symfony2. Symfony2 HWIOauthBundle error with responseSymfony2 HwioAuth - ottenere il profildetail completo da linkedin

Grazie a Stloyd per la sua risposta, questo mi ha aiutato a capire come utilizzare il pacchetto per ottenere l'accesso a linkedin.

Sto provando ora a ottenere non solo il nome formattato da linkedin ma anche altre informazioni come educations, skill s.o.

Non sono sicuro se questo è generalmente possibile con HwioAuth? Questa è la mia 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 

Questo è il mio 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 

Questo è il mio fornitore di classe di servizio:

<?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; 
    } 
} 

come vedete che io give_out il JSON cosa ricevo da linkedin. Hier è probabilmente la risposta e i campi per le educazioni, le abilità sono vuote!

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 => è il valore $ privata autenticata => bool (false)

Am I autenticato? E come posso accedere ad altri campi con r_fullprofile come scope da Linkedin?

riguarda

risposta

1

un'occhiata a questo LinkedIn API client e il suo primo esempio. Si prelevano le cose da

$linkedIn->api('v1/people/~:(firstName,lastName)'); 

Inoltre, dai un'occhiata allo API documentation. Indica chiaramente quali campi puoi recuperare e come.