2

我知道這個問題已經討論過,但是我仍然無法找到解決方案。與HWIOAuthBundle獲取臉書照片

我爲我的用戶和社交連接使用帶有FOSUserBundle的HWIOAuth Bundle。

#app/config.yml 

#HWIOAuthBundle 
hwi_oauth: 
    firewall_name: main 
    resource_owners: 
     facebook: 
      type:   facebook 
      client_id:  %oauth.facebook.id% 
      client_secret: %oauth.facebook.secret% 
      scope:   "email" 
      options: 
       display: popup 
      infos_url:  "https://graph.facebook.com/me?fields=id,name,email,picture.type(square)" 
      paths: 
       email:   email 
       profilepicture: picture.data.url 
    http_client: 
     verify_peer: false 

如何在我的Twig文件中集成「profilepicture:picture.data.url」?

<li class="user-header"> 
    <img src="{{ asset('theme/AdminLTE/dist/img/user2-160x160.jpg') }}" class="img-circle" alt="User Image" /> 
     <p> 
      {{ app.user.username }} 
     </p> 
</li> 

非常感謝,我不明白我怎麼可以使用此參數「profilepicture:picture.data.url」來獲得與HWIOAuthBundle Facebook的個人資料圖片。

回答

0

就可以收到要求,即loadUserByOAuthUserResponse(UserResponseInterface $響應)的詳細信息:

/* @var $response \HWI\Bundle\OAuthBundle\OAuth\Response\UserResponseInterface */ 
    var_dump(
     $response->getEmail(), 
     $response->getProfilePicture() 
    ); 
+0

爲了記錄,我做了,我去電子郵件,NULL:'( – julestruong

0

我解決了這個問題,在我的實體添加字段:

//Acme/UserBundle/Entity/User.php 

/** 
* @var string 
* 
* @ORM\Column(name="profile_picture", type="string", length=250, nullable=true) 
* 
*/ 
protected $profilePicture; 

和修改UserProvider.php像這個:

//Acme/UserBundle/OAuth/UserProvider.php 

protected function updateUserByOAuthUserResponse(User $user, UserResponseInterface $response) 
{ 

    $providerName = $response->getResourceOwner()->getName(); 
    $providerNameSetter = 'set'.ucfirst($providerName).'Id'; 
    $user->$providerNameSetter($response->getUsername()); 

    $user->setProfilePicture($response->getProfilePicture()); 

    if(!$user->getPassword()) { 
     // generate unique token 
     $secret = md5(uniqid(rand(), true)); 
     $user->setPassword($secret); 


    } 

    return $user; 
}