Bloguri dofollow
Mihai Iorga
Postat pe data 16-07-2011 de Mihai Iorga

Pentru că în ultima vreme codurile QR au început să devină oarecum o obsesie pentru mulţi, trebuie ştiut că nu este foarte greu să generezi un cod atâta timp cât Google pune la dispoziţie un API destul de simplu.

Codul QR se foloseşte în special pentru smartphone-uri, iar companiile îl folosesc pentru a trimite mai multe date clienţilor, date uşor de obţinut şi de păstrat.

Majoritatea smartphone-urilor au deja încorporat acest “feature”, daca nu îl au sunt absolut convins că există în magazinele lor virtuale, şi sunt gratis.

Tipurile generale de coduri QR sunt simple texte sau link-uri care duc de obicei la un anume produs sau formular de contact.

Pentru ca telefonul sa înţeleagă ce face conţinutul unui cod QR, codul a fost standardizat prin anumite mesaje:

1
2
3
4
5
6
7
$bookmark = 'MEBKM:TITLE:Mihai Iorga;URL:http://mihai.iorga.eu'; // bookmark către acest blog cu titlul "Mihai Iorga"
$sms = 'SMSTO:0700000000:Salut'; // SMS către numarul "0700000000" cu mesajul "Salut"
$call = 'TEL:0700000000'; // apelare rapidă către numarul de telefon "0700000000"
$email = 'MATMSG:TO:mihai@iorga.eu;SUB:Subiectul meu;BODY:Mesajul meu;;'; // email către "mihai@iorga.eu" cu subiectul "Subiectul meu" şi conţinutul mesajului "Mesajul meu"
$connect = 'WIFI:T:WEP;S:MIHAIIORGA;P:MIHAI'; // WEP este tipul de autentificare care poate fi WEP sau WPA, MIHAIIORGA este numele SSID, iar MIHAI este parola
$geo = 'GEO:44.43163,26.10090,2'; // se referă la geolocaţia "44.43163,26.10090", la înălţimea de "2" metri
$text = 'Salut, ce mai faci'; // simplu text care este tradus de aplicaţia care citeşte codul "Salut, ce mai faci"

Acestea fiind doar principalele tipuri de mesaje.

Pentru a genera un cod QR apelăm serviciile Google:

1
2
3
4
5
6
7
8
9
// preluăm primul tip de mesaj 'MEBKM:TITLE:Mihai Iorga;URL:http://mihai.iorga.eu'
// accesam Google Charts
$QR = "http://chart.apis.google.com/chart?chs=150x150&cht=qr&chld=L|0&chl=MEBKM:TITLE:Mihai Iorga;URL:http://mihai.iorga.eu";
 
// 150x150 este înălţimea şi lăţimea imaginii, ele trebuie să fie de aceeaşi dimensiune
// qr este pentru a informa Google de intenţia noastră, aceea de a genera un cod QR, pentru că acest API nu conţine numai coduri QR.
// L este tipul de criptare al codului QR adică "Low" sau "Smallest", poate fi in ordine crescătoare: L, M, Q, H. De obicei se foloseşte L pentru că este cel mai uşor de citit.
// 0 este marginea, daca îl schimbăm cu 1 o să primim o imagine cu o margine de 15px.
// iar ultimul parametru este textul meu preformatat pentru a produce un bookmark.

Este o metoda simplă si destul de eficientă care nu necesită prea multe cunoştinţe de programare şi este uşor de implementat.
Acest tutorial este posibil să nu mai funcţioneze la un moment dat în viitor din cauză că nu se bazeaza pe un motor propriu ci se bazează pe API-urile Google care se pot schimba fără nici o notificare.

Mihai Iorga
Postat pe data 14-07-2011 de Mihai Iorga

Pentru a porni o sesiune corect în orice aplicaţie pe Facebook trebuie ştiut cum se face corect pentru a nu avea probleme cu celelalte acţiuni:

Primul rând care trebuie scris imediat după “<body>” este div-ul “fb-root”, pentru că de el se va ataşa SDK-ul javascript al Facebook-ului. Acest aspect este foarte important!

1
<div id="fb-root"></div>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<script type="text/javascript">
 
// creăm un element "script" în interiorul div-ului "fb-root" care va încărca SDK-ul javascript
 
var e = document.createElement('script');
e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js';
e.async = true;
document.getElementById('fb-root').appendChild(e);
 
 
// numai după ce s-a încarcăt toată aplicaţia putem încarca funcţiile noastre, cel mai indicat este după ce documentul este încarcat complet
(function() {
	// la fel verificăm daca SDK-ul Facebook este încărcat
	window.fbAsyncInit = function() {
		FB.init({
		appId  : 12345678901112,
		  status : true,
		  cookie : true,
		  xfbml  : true
		});
 
		// aici încarcam funcţiile noastre
		/* *********************************************** */
		// de obicei eu de fiecare dată mai adaug funcţia de AutoResize, pentru că nu de fiecare dată Facebook face asta corect.
		// de asemenea trebuie ştiut că în root-ul aplicaţiei, URL-ul care este setat în aplicaţie trebuie să existe fişierul "xd_receiver.htm" care la rândul lui se comportă ca un mic motor  pentru a permite comunicarea dintre platforme, printre care şi înălţimea documentului, ca acesta să ştie să redimensioneze (Cross Domain Receiver) - conţinutul un pic mai jos
		FB.Array.forEach([0, 100, 300, 500, 1000, 2000], function(delay) {
			setTimeout(function() { FB.Arbiter.inform("setSize", FB.Canvas._computeContentSize()) }, delay)
		})
		FB.Canvas.setAutoResize();
	};
})();
</script>

“xd_receiver.htm”

1
2
3
4
5
6
7
8
9
< !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" > 
<head> 
<title>Cross-Domain Receiver Page</title> 
</head> 
<body> 
<script src="http://static.ak.connect.facebook.com/js/api_lib/v0.4/XdCommReceiver.js?2" type="text/javascript"></script> 
</body> 
</html>
Mihai Iorga
Postat pe data 14-07-2011 de Mihai Iorga

O alta problemă este postarea automată a unei informaţii direct pe peretele utilizatorului.
Pentru a putea face acest lucru întâi trebuie să obţinem drepturi de a publica pe perete, dreptul pe care trebuie sa îl cerem este “publish_stream”. Acest lucru se face foarte simplu:

1
2
3
4
5
6
7
8
9
<script type="text/javascript">
FB.login(function(response) {
		if (response.session) {
			if (response.perms) {
				// aici reîncărcăm pagina daca am obţinut permisiunile, există 2 feluri: "top.location.href" sau "window.location.href" pentru că aplicaţia este în iFrame, Facebook nu mai acceptă decât aplicaţii bazate pe iFrame
			}
		}
	}, {perms:'publish_stream'});	
</script>

Pentru ca scriptul de mai sus să funcţioneze trebuie întâi iniţializat SDK-ul Facebook prin Javascript, PHP sau combinate.

Pentru a publica un mesaj pe peretele utilizatorului o să ne folosim de API-ul Facebook-ului prin PHP SDK.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
< ?php
$atasament = array('message' => 'M-am inscris în aplicaţia lui Ion',
			'name' => 'Aplicaţia lui Ion',
			'caption' => 'Cea mai tare aplicaţie.',
			'link' => 'https://apps.facebook.com/aplicatiamea/',
			'description' => 'Descrierea aplicaţiei pentru mesajul de pe perete',
			'picture' => 'http://www.example.org/logo.jpg',
			'actions' => array(array('name' => 'Vino şi tu',
							  'link' => 'https://apps.facebook.com/aplicatiamea/'))
			);
 
 
$rezultat = $facebook->api('/me/feed/', 'post', $atasament);
?>
Mihai Iorga
Postat pe data 14-07-2011 de Mihai Iorga

Funcţia se referă la “like-urile” date pe paginile aplicaţiilor.
De exemplu, dacă avem o aplicaţie care este strict legată de o anumită pagină a Facebook-ului şi nu vrem ca utilizatorul să poată folosi aplicaţia decât dacă este fan acelei pagini îi afisăm casuţa FB:Like. Pentru a trece mai departe sau a reîncarca pagina edge.create este funcţia de care avem nevoie, ea pur şi simplu vede că utilizatorul a făcut click pe căsuţă şi apelează funcţiile pe care le specificăm:

1
2
3
4
5
6
<script type="text/javascript">
      FB.Event.subscribe('edge.create', function(href, widget) {
			// aici apelam orice funcţie dorim
			alert('a dat like');
      });
</script>

Desigur, această funcţie nu funcţionează dacă sesiunea nu este iniţializată. Ea întâi trebuie iniţializată din PHP sau JavaScript pentru a crea un cookie şi apoi apelată funcţia “FB.init” din javascript.

Mihai Iorga
Postat pe data 13-07-2011 de Mihai Iorga

Nu am mai scris de mult un tutorial sau un exemplu despre “Cum se face” …. o să mai adaug din când în când câte un pic din cunoştintele mele.
Deci, ca developer a unor mici aplicaţii pe Facebook de multe ori m-am lovit de problema “isFan?”
Soluţia e chiar una simplă:

bineînţeles, întâi trebuie creată o aplicaţie pentru a obţine un APP_ID şi APP_SECRET

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
< ?php
require 'facebook.php'; // SDK-ul facebook poate fi preluat de pe https://github.com/facebook/php-sdk/
$isForPage = "100000000000000"; // ID-ul paginii pentru care vrem sa aflăm dacă suntem sau nu fan
$app_id = "123456789101112"; // ID-ul aplicaţiei noastre
$app_secret = "0123456789abcdef0123456789abcdef"; // cheia SECRET a aplicaţiei noastre
$facebook = new Facebook(array(
	'appId' => $app_id,
	'secret' => $app_secret,
	'cookie' => true
));
 
// getSignedRequest() de obicei preia informaţii utile despre utilizator şi pagina unde se află, în productie nu o sa preia "like_status" pentru ca nu are acces la informaţii, pentru acces trebuie TOKEN
$signed_request = $facebook->getSignedRequest();
$oauth_token = $signed_request['oauth_token'];
 
// preluam isFan direct din api-ul lor, o metodă simplă şi uşoară
$isFan = file_get_contents("https://api.facebook.com/method/pages.isFan?format=json&access_token=" . $oauth_token . "&page_id=".$isForPage);
 
// $signed_request conţine o matrice cu destul de multe informaţii utile ;)
?>

Acest mic tutorial se referă la paginile Facebook care îţi “cer” să fii fan pentru aţi afişa alte informaţii.
Ştiu că nu explic prea bine niciodată, dar cred că m-am facut înţeles. ;)