Как использовать изображение пользователя Facebook Connect в представлениях?
Я использую модуль Facebook Connect на своем сайте Drupal 7. Если пользователь заходит на мой сайт через Facebook, его фотография пользователя Facebook импортируется в его учетную запись на моем сайте. Но теперь мне интересно, есть ли какой-либо способ показать эту фотографию пользователя Facebook в представлениях. Это изображение отображается только на странице профиля пользователя, а не в любом представлении, которое ссылается на поле изображения пользователя.
Кто-нибудь знает, как это сделать, или есть ли какой-либо способ автоматического импорта изображение на Facebook должно быть стандартным изображением пользователя?
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);
}
}
}
Другое лучшее место для зацепления
/**
* 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);
}
}
}