Как использовать изображение пользователя Facebook Connect в представлениях?


Я использую модуль Facebook Connect на своем сайте Drupal 7. Если пользователь заходит на мой сайт через Facebook, его фотография пользователя Facebook импортируется в его учетную запись на моем сайте. Но теперь мне интересно, есть ли какой-либо способ показать эту фотографию пользователя Facebook в представлениях. Это изображение отображается только на странице профиля пользователя, а не в любом представлении, которое ссылается на поле изображения пользователя.

Кто-нибудь знает, как это сделать, или есть ли какой-либо способ автоматического импорта изображение на Facebook должно быть стандартным изображением пользователя?

Author: Patrick Kenny, 2012-04-29

2 answers

Я нашел решение: вы можете использовать следующий крючок, чтобы скопировать изображение пользователя facebook и сохранить его как изображение пользователя drupal. Обязательно попросите своих пользователей разрешить это!

/* Copy facebook image if no user image is present.
   See: http://drupal.org/node/1764176 */
function custom_api_user_login (&$edit, $account) {
  $fbuid = fbconnect_get_fbuid();
  if(is_null($account->picture) && $fbuid && isset($account->data['fb_avatar']) && $account->data['fb_avatar']){
    #$test = fbconnect_user_picture_override(array('fbuid' => $fbuid, 'account' => $account, 'size' => '25'));
    #drupal_set_message(print_r($test, true), 'status', true);

    if(copy("http://graph.facebook.com/".$fbuid."/picture?type=normal", '/tmp/'.$fbuid.'.jpg')) {
      $path = '/tmp/'.$fbuid.'.jpg';
      $file = new StdClass();
      $file->uid = $account->uid;
      $file->uri = $path;
      $file->filename = $fbuid;
      $file->filemime = file_get_mimetype($file->uri);
      $file->filesize = filesize($path);
      $file->status = FILE_STATUS_PERMANENT;
      $dest = "public://" . $fbuid.'.jpg';
      $file = file_copy($file, $dest);
      file_save($file);
      $edit['picture'] = $file;
      user_save($account, $edit);
      #drupal_set_message(print_r('<img typeof="foaf:Image" src="'.$path.'" alt="Naomi Yoshida">', true), 'status', true);
    } else {
      drupal_set_message(print_r('Kopieren schlug fehl', true), 'status', true);
    }
   }
}
 2
Author: user5950, 2013-01-21 11:28:13

Другое лучшее место для зацепления

/**
 * hook_fboauth_user_save()
 * @param type $edit
 * @param type $fbuser
 * 
 */
function sapbrw_registration_fboauth_user_save($account, $fbuser) {

  // Check if the logged in user has a picture saved & has linked their FB     account through fboauth
  if (empty($account->picture)) {
if (copy("http://graph.facebook.com/" . $fbuid . "/picture?type=normal", '/tmp/' . $fbuser->id . '.jpg')) {
  $path = '/tmp/' . $fbuser->id . '.jpg';
  $file = new StdClass();
  $file->uid = $account->uid;
  $file->uri = $path;
  $file->filename = $fbuser->id;
  $file->filemime = file_get_mimetype($file->uri);
  $file->filesize = filesize($path);
  $file->status = FILE_STATUS_PERMANENT;
  $dest = "public://" . $fbuser->id . '.jpg';
  $file = file_copy($file, $dest);
  file_save($file);
  $edit['picture'] = $file;
  user_save($account, $edit);
}
}

}
 0
Author: allabakash.g, 2013-12-23 06:16:01