» » » » DLE 10.3 Facebook profil resmini avatar olarak kullanma

DLE 10.3 Facebook profil resmini avatar olarak kullanma

Sukru
Sukru 12-09-2014, 00:52
Merhabalar siteye facebook ile bağlananların facebook profil resmini avatar olarak nasıl kullanabiliriz?
Çözüldü İşleme Alındı Bekliyor Çözülemedi
Bilgilendirme
Yorum Ekleyebilmeniz için Sitemize Kayıt Olmanız Gerekmektedir.
0
Sukru 20 Mart 2015 21:19
Arkadaşlar iki dosyada yaptığım değişiklik ile facebook avatar çekebiliyorum. Fakat sorun 2 sefer login olmak gerekiyor. Bu sorunu çözecek arıyorum :) hadi bakalım kim çözecek

engine/classes/social.class.php

Eklediğim kodlar

$fb = file_get_contents('http://graph.facebook.com/'.$user['id'
;].'/picture?redirect=0&type=large'); $json = json_decode($fb); $resim = $json->data->url;


Son hali

class AuthViaFacebook {

    function get_user( $social_config ) {
		global $config, $lang;

		$params = array(
			'client_id'     => $social_config['fcid'],
			'client_secret' => $social_config['fcsecret'],
			'code' => $_GET['code'],
			'redirect_uri'  => $config['http_home_url'] . "index.php?do=auth-social&provider=fc"
		);

		@parse_str(http_get_contents('https://graph.facebook.com/v2.0/oauth/acce
ss_token' . '?' . http_build_query($params)), $token); if (isset($token['access_token'])) { $params = array('access_token' => $token['access_token']); $user = @json_decode(http_get_contents('https://graph.facebook.com/v2.0/me' . '?' . http_build_query($params)), true); $fb = file_get_contents('http://graph.facebook.com/'.$user['id'
;].'/picture?redirect=0&type=large'); $json = json_decode($fb); $resim = $json->data->url; if (isset($user['id'])) { return array ('sid' => sha1 ('facebook'.$user['id']), 'nickname' => $user['name'], 'name' => $user['first_name'].' '.$user['last_name'], 'email' => $user['email'], 'avatar' => $resim, 'provider' => 'Facebook' ); } else return $lang['social_err_3']; } else return $lang['social_err_1']; } }


engine/modules/social.php

Değiştirdiğim kodlar

if( intval( $user_group[$config['reg_group']]['max_foto'
] ) > 0 AND $social_user['avatar'] ) { $n_array = explode( ".", $social_user['avatar'] ); $type = end( $n_array ); $type = totranslit( $type ); $allowed_extensions = array ("jpg", "png", "gif" ); if( in_array( $type, $allowed_extensions ) ) { include_once ENGINE_DIR . '/classes/thumb.class.php'; if( @copy($social_user['avatar'], ROOT_DIR . "/uploads/fotos/" . $id . "." . $type) ){ @chmod( ROOT_DIR . "/uploads/fotos/" . $id . "." . $type, 0666 ); $thumb = new thumbnail( ROOT_DIR . "/uploads/fotos/" . $id . "." . $type ); $thumb->size_auto( $user_group[$config['reg_group']]['max_foto'
] ); $thumb->jpeg_quality( $config['jpeg_quality'] ); $thumb->save( ROOT_DIR . "/uploads/fotos/foto_" . $id . "." . $type ); @unlink( ROOT_DIR . "/uploads/fotos/" . $id . "." . $type ); $foto_name = "foto_" . $id . "." . $type; $db->query( "UPDATE " . USERPREFIX . "_users SET foto='{$foto_name}' WHERE user_id='{$id}'" ); } } }


Son hali

		if( intval( $user_group[$config['reg_group']]['max_foto'
] ) > 0 AND $social_user['avatar'] ) { include_once ENGINE_DIR . '/classes/thumb.class.php'; if( @copy($social_user['avatar'], ROOT_DIR . "/uploads/fotos/" . $id . "." . jpg) ){ @chmod( ROOT_DIR . "/uploads/fotos/" . $id . "." . jpg, 0666 ); $thumb = new thumbnail( ROOT_DIR . "/uploads/fotos/" . $id . "." . jpg ); $thumb->size_auto( $user_group[$config['reg_group']]['max_foto'
] ); $thumb->jpeg_quality( $config['jpeg_quality'] ); $thumb->save( ROOT_DIR . "/uploads/fotos/foto_" . $id . "." . jpg ); @unlink( ROOT_DIR . "/uploads/fotos/" . $id . "." . jpg ); $foto_name = "foto_" . $id . "." . jpg; $db->query( "UPDATE " . USERPREFIX . "_users SET foto='{$foto_name}' WHERE user_id='{$id}'" ); } }
3 779
MaRZoCHi 20 Mart 2015 20:34
@Sukru, yaptığınız değişikliği yazarsanız daha kolay anlaşılır. Ayırca kodları code tagı ile ekleyin yapısı bozulmasın.

--------------------
0
Sukru 20 Mart 2015 20:17
ikinci seferde giriş yapmasını düzelten yok mu acaba :)
0
Sukru 8 Mart 2015 20:16
Eklediğim kodlar ile sorunsuz bir şekilde facebooktan avatarı çekebildim. Fakat bir yerde sıkıntı var facebook veya google ile bağlana tıkladığımda ilk olarak popup içinde anasayfa gözüküyor ve kapanmıyor.İkinci seferde bağlana tıkladığımda giriş yapıyor.Yani iki seferde giriyor.Dosyaları ekledim isterseniz indirin bakın sorunu düzelttiğinizde paylaşırsanız sevinirim.

engine\classes\social.class.php

$fb = file_get_contents('http://graph.facebook.com/'.$user['id'
;
;].'/picture?redirect=false');

$json = json_decode($fb);

$resim = $json->data->url;

if (isset($user['id'])) {

return array ('sid' => sha1 ('facebook'.$user['id']), 'nickname' => $user['name'], 'name' => $user['first_name'].' '.$user['last_name'], 'email' => $user['email'], 'foto' => $resim, 'provider' => 'Facebook' );

}


engine\modules\social.php

include_once ENGINE_DIR . '/classes/thumb.class.php';

if( @copy($social_user['foto'], ROOT_DIR . "/uploads/fotos/" . $id . "." . jpg) ){

@chmod( ROOT_DIR . "/uploads/fotos/" . $id . "." . jpg, 0666 );
$thumb = new thumbnail( ROOT_DIR . "/uploads/fotos/" . $id . "." . jpg );
$thumb->save( ROOT_DIR . "/uploads/fotos/foto_" . $id . "." . jpg );
@unlink( ROOT_DIR . "/uploads/fotos/" . $id . "." . jpg );
$foto_name = "foto_" . $id . "." . jpg;

$db->query( "UPDATE " . USERPREFIX . "_users SET foto='{$foto_name}' WHERE user_id='{$id}'" );
}


Yandex.disk
3 779
MaRZoCHi 5 Mart 2015 11:11
@marika, şimdi gördüm. Resim indirmek için copy fonksiyonu kullanılıyor. Muhtemelen aynı işlev ile çekiliyor copy için ayrı bir izin gerekmiyor galiba. Ama çalışmıyorsa ayar gerekli.

--------------------
0
marika 5 Mart 2015 00:25
php.ini de file_get_contents aktif olması gerekiyormuş diyorlar Mehmet hocam.
Ben pek anlamam ama.
3 779
MaRZoCHi 4 Mart 2015 21:04
Hayır kodlarda avatar olarak kalması lazım. Fakat sistemde bir problem var. URL'yi indirmiyor sistem. Bu durumda diğer sistemlerde nasıl vk, google ? avatar siteye yükleniyor mu?

--------------------
0
Sukru 4 Mart 2015 16:13
@MaRZoCHi, ilgi ve alakan için teşekkür ederim.Verdiğin kodları denedim ama maalesef resim çekmiyor.Şu dikkatimi çekti normal avatar yüklediğimde veritabanında foto kısmına düşüyor. Senin kodlarında avatar kısmı bulunmakta bende avatarı foto olarak çevirdim sonuç yine aynı :(
0
muhammed 4 Mart 2015 12:10
@MaRZoCHi, Ben default temada denedim sürüm 10.4 çalışmadı hata geçti ama avatarı çekmedi . sad

http://photoshoptr.net/

İsterseniz Sizde Bi Deneyin Hocam
3 779
MaRZoCHi 4 Mart 2015 11:58
@muhammed, eklenen koddaki
$ava['url']
yi
$ava->url
olarak değiştirip denermisin.

Not: 2 kez yapılacak, yorumdaki kod değiştirdim. Onu kullanabilirsin

--------------------
0
muhammed 4 Mart 2015 10:19
@MaRZoCHi, Hata Verdi Giriş Yaparken .
Fatal error: Cannot use object of type stdClass as array in /home/photosho/public_html/engine/classes/social.class.php on line 198 
3 779
MaRZoCHi 4 Mart 2015 09:53
engine/classes/social.class.php dosyasını açın
Bul :
return array ('sid' => sha1 ('facebook'.$user['id']), 'nickname' => $user['name'], 'name' => $user['first_name'].' '.$user['last_name'], 'email' => $user['email'], 'avatar' => '', 'provider' => 'Facebook' );


İle değiştir:
				$ava = @json_decode( http_get_contents("https://graph.facebook.com/" . $user['id'] . "/picture?redirect=false&height=200&width=200" ) );
				if ( isset( $ava->url )) {
					return array ('sid' => sha1 ('facebook'.$user['id']), 'nickname' => $user['name'], 'name' => $user['first_name'].' '.$user['last_name'], 'email' => $user['email'], 'avatar' => $ava->url, 'provider' => 'Facebook' );
				} else {
					return array ('sid' => sha1 ('facebook'.$user['id']), 'nickname' => $user['name'], 'name' => $user['first_name'].' '.$user['last_name'], 'email' => $user['email'], 'avatar' => '', 'provider' => 'Facebook' );
				}


Deneme yapmadım. Sonucu bildirirseniz sevinirim.

--------------------
0
Sukru 3 Mart 2015 23:32
Şuanda 10.4 kullanıyorum sorun devam etmekte inceledim ama yapamadım.Konu günceldir.
0
muhammed 23 Şubat 2015 11:25
@VK, Ben Default Temada Girdim Olmadı Localhostta Kurdum 10.3 Facebook Tan Almadı Ama Google Alıyor Galiba Denemedim .
0
KAYA 23 Şubat 2015 02:15
@muhammed, 10.3 Kullanıyorum Ben.
Yarın Yükseltcem Birde O Sürülümde Bakayım. Sen Bir Default Tema 'da Konturol Et.

İyi Çalışmalar
0
muhammed 23 Şubat 2015 00:42
@VK,bunun icin ek bisey yaptinizmi cunku ben yaptigimda olmadi surum 10.4
0
KAYA 22 Şubat 2015 20:33
Bu Dediğiniz Zaten Çalışır Durumda. Tema dan Kaynaklanıyor Olabilir.
Konturol Ettim, Örnek: Default Tema da Facebook (+Google, Yandex) Giriş Profil Resmini Avatar Olarak Göstermektedir.
0
muhammed 22 Şubat 2015 19:49
Takipteyim Yokmu Bi Yolu
0
Sukru 13 Eylül 2014 20:56
Evet şimdi bende baktım dediğiniz gibi facebook için yok mehmet bey ilgilenirse çok iyi olur
0
marika 12 Eylül 2014 23:59
social.class.php dosyasında Google ile girişte avatar alma kodu var ama google console ayarlarında apiler de aktif ama almadı.

social.class.php dosyasında Face ile girişte avatar alma kodu yok.

Mehmet hocamın vakti olursa bir şeyler yapabilir.