2014-12-18 3 views
2

Я строю свой первый Grails приложение и успешно интегрированы все из следующих модулей:Grails Spring Security Core - Как отобразить изображение профиля с помощью плагина Spring Security Facebook?

В настоящее время, я могу нажать «Логин с Facebook ", и я добавил FacebookAuthService, который позволяет мне извлекать имя пользователя, электронную почту и т. д., и я показываю имя пользователя на экране, используя тег tag. Мой вопрос заключается в том, как получить изображение профиля пользователя Facebook и отобразить его на странице. Я все посмотрел и не смог найти хороший пример. Может ли кто-нибудь предоставить его?

У меня есть следующий метод, определенный в FacebookAuthService:

FacebookUser create(FacebookAuthToken token) { 
    log.info("Create domain for facebook user $token.uid") 

    //Use Spring Social Facebook to load details for current user from Facebook API 
    Facebook facebook = new FacebookTemplate(token.accessToken.accessToken) 
    FacebookProfile fbProfile = facebook.userOperations().userProfile 
    String email = fbProfile.email 
    String username = fbProfile.username 
    String firstName = fbProfile.firstName 
    String lastName = fbProfile.lastName 

    User person = new User(
      username: [firstName, lastName].join(' '), 
      password: token.accessToken.accessToken, //not really necessary 
      enabled: true, 
      accountExpired: false, 
      accountLocked: false, 
      passwordExpired: false, 

      //fill with data loaded from Facebook API 
      name: [firstName, lastName].join(' '), 
      email: email 
    ) 
    person.save(flush : true) 
    person.validate() 
    println person.errors 
    UserRole.create(person, Role.findByAuthority('ROLE_USER')) 
    UserRole.create(person, Role.findByAuthority('ROLE_FACEBOOK')) 
    FacebookUser fbUser = new FacebookUser(
      uid: token.uid, 
      accessToken: token.accessToken.accessToken, 
      accessTokenExpires: token.accessToken.expireAt, 
      user: person 
    ) 
    fbUser.save() 
    return fbUser 
} 
+0

это весна Социальные сети Facebook работу, я помню, что было сложно, но не может найти точный код –

+0

взглянуть http://stackoverflow.com/questions/11442442/get-user -profile-picture-by-id –

+0

@Griffin, просто интересно, поняли ли вы решение этого вопроса. Если да, добрый пост. Благодарю. – ibaralf

ответ

0

я получил массив байт и сохранил это как рис.

байт [] profilePic = facebook.userOperations(). GetUserProfileImage();

1

В моем случае мне нужно было ImageUrl, но не само изображение

Вы можете использовать следующие ссылки для получения различных размеров изображений профилей. Не забудьте добавить идентификатор Facebook в URL.

Большого размера фото https://graph.facebook.com/ {facebookId}/картина? Тип = большой

Среднего размер фото https://graph.facebook.com/ {facebookId}/картина? Тип = нормальный

Малого размера фото https://graph.facebook.com/ {facebookId}/картина? Тип = маленький

Square фото https://graph.facebook.com/ {facebookId}/картина? Тип = квадратный

Ps Вы можете получить facebookId от Userprofile: facebook.userOperations().getUserProfile();

Смежные вопросы