2013-09-04 14 views
20

symfony2のhwioauthbundleに関する私の質問のために、すでに昨日トピックを開いた。 Symfony2 HWIOauthBundle error with responsesymfony2 HwioAuth - linkedinから完全なprofildetailを取得

彼の答えはStloydのおかげで、これはリンクされたものにアクセスするためのバンドルの使い方を理解するのに役立ちました。

私は今、linkedinからフォーマットされた名前だけでなく、教育、スキルs.oのような他の情報も取得しようとしています。

これは一般的にHwioAuthで可能かどうか分かりませんか?私のsecurity.ymlである私の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 

です :

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 

これは私のサービスクラスプロバイダである:

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

あなたは私が何をJSONをgive_out見るように私はlinkedinから得る。 Hierはprobally応答と教育のためのフィールドです、スキルは空です!保護$ oAuthToken =>値である プライベート$認証された=> BOOL(偽)

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) { 
    } 
} 

}

私は、認証されただろうか? そして、Linkedinのスコープとしてr_fullprofileを使って他のフィールドにアクセスするにはどうしたらいいですか?

よろしく

答えて

1

このLinkedIn API clientを見て、その最初の例。あなたは物を取ります。を見てください。フェッチできるフィールドとその方法を明確に述べています。

関連する問題