首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用HWIOAuthBundle获取facebook头像

使用HWIOAuthBundle获取facebook头像
EN

Stack Overflow用户
提问于 2015-05-20 18:47:20
回答 2查看 1.7K关注 0票数 2

我知道这个问题已经讨论过了,但我仍然找不到解决方案。

我使用带有FOSUserBundle的HWIOAuth捆绑包来连接我的用户和社交。

代码语言:javascript
复制
#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“?

代码语言:javascript
复制
<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头像。

EN

回答 2

Stack Overflow用户

发布于 2015-05-20 20:16:17

您可以在例如loadUserByOAuthUserResponse(UserResponseInterface $response中接收所需的详细信息:

代码语言:javascript
复制
 /* @var $response \HWI\Bundle\OAuthBundle\OAuth\Response\UserResponseInterface */
    var_dump(
        $response->getEmail(),
        $response->getProfilePicture()
    );
票数 0
EN

Stack Overflow用户

发布于 2015-05-22 03:59:07

我解决了这个问题,在我的实体中添加一个字段:

代码语言:javascript
复制
//Acme/UserBundle/Entity/User.php

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

并像这样修改UserProvider.php:

代码语言:javascript
复制
//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;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30347424

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档