Получите изображение профиля facebook с помощью HWIOAuthBundle

Я знаю, что эта тема уже обсуждалась, но я все еще не могу найти решение.

Я использую HWIOAuth Bundle с FOSUserBundle для своих пользователей и социальных сетей.

#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

Как я могу интегрировать «profilepicture: picture.data.url» в свой файл Twig?

<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», чтобы получить изображение профиля facebook с помощью HWIOAuthBundle.


person toniino38    schedule 20.05.2015    source источник


Ответы (2)


вы можете получить требуемые сведения, например, loadUserByOAuthUserResponse(UserResponseInterface $response):

 /* @var $response \HWI\Bundle\OAuthBundle\OAuth\Response\UserResponseInterface */
    var_dump(
        $response->getEmail(),
        $response->getProfilePicture()
    );
person Badr eddine SEBBANI    schedule 20.05.2015
comment
Для протокола, я сделал, я иду по электронной почте, NULL :'( - person julestruong; 02.02.2017

Я решил эту проблему, добавив поле в свой объект:

//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;
}
person toniino38    schedule 21.05.2015