Permalink
Browse files

[facebook] inicio integracion con FB

  • Loading branch information...
1 parent 052498a commit 12462927db9fa0a4ca590fd24dc2f4d75a5bbf15 cronopio committed Jun 8, 2011
Showing with 41 additions and 9 deletions.
  1. +10 −5 server.js
  2. +1 −0 views/index.jade
  3. +30 −4 views/layout.jade
View
15 server.js
@@ -44,6 +44,8 @@ var checkFirma = function(sinverificar, msg){
if (firma == supuesta){
return true;
} else {
+ console.log('Supuesta '+supuesta);
+ console.log('Firma '+firma);
return false;
}
@@ -68,22 +70,25 @@ app.post('/', function(req, res){
if (req.body.signed_request){
// Es una peticion desde facebook
var peticion = req.body.signed_request.split('.');
- var firma = peticion[0].replace(/_/, '/').replace(/-/, '+');
+ var firma = peticion[0].replace(/_/g, '/').replace(/-/g, '+');
var fbObj = JSON.parse(base64_decode(peticion[1]));
if (fbObj.algorithm != 'HMAC-SHA256'){
console.error('Recibido un mensaje en diferente cifrado');
throw new Error('Error de comunicacion con Facebook');
}
if (checkFirma(firma,peticion[1])){
- // Podemos confiar en el mensaje y tratar sus datos
- console.log(fbObj);
- res.redirect('/');
+ // Podemos confiar en el mensaje y tratar sus datos
+ console.log(fbObj);
+ // Cuando el usuario autoriza la app pasa por aca
+ // y existe fbObj.user_id Este ID hay que guardarlo en nuestra DB
+ // adicionalmente viene un token oauth2 en fbObj.oauth_token
+ res.redirect('/');
} else {
console.error('La firma del mensaje no es valida');
throw new Error('Error al validar el mensaje con Facebook');
}
}
});
-app.listen(3001);
+app.listen(3000);
console.log("Express server listening on port %d", app.address().port);
View
1 views/index.jade
@@ -7,3 +7,4 @@
b €#{euros}
span(style='margin-left:4px;') GBP
b £#{libras}
+ p(class='fbbox', style='position:absolute;top:185px;left:140px;', id='userLine')
View
34 views/layout.jade
@@ -3,13 +3,39 @@ html
head
title= title
link(rel='stylesheet', href='/stylesheets/style.css')
- script(src='http://connect.facebook.net/en_US/all.js')
- script
+ script(type='text/javascript', src='http://connect.facebook.net/en_US/all.js')
+ //script(type='text/javascript', src='http://static.ak.fbcdn.net/connect/en_US/core.debug.js')
+ body!= body
+ #fb-root
+ script(type='text/javascript')
+ var urlencode = function(str){
+ str = (str+'').toString();
+ return encodeURIComponent(str).replace(/!/g, '%21').replace(/'/g, '%27')
+ .replace(/\\(/g, '%28').replace(/\\)/g, '%29')
+ .replace(/\\*/g, '%2A').replace(/%20/g, '+');
+ };
FB.init({
appId: '124829930933291',
status: true,
cookie: true,
xfbml: true
});
- body!= body
- #fb-root
+ FB.getLoginStatus(function(res){
+ console.log(res);
+ if (res.session){
+ console.log(res.session);
+ FB.api('/me', function(user){
+ if (user != null){
+ var userLine = document.getElementById('userLine');
+ var imagen = document.createElement('img');
+ imagen.src = 'http://graph.facebook.com/'+user.id+'/picture';
+ userLine.appendChild(imagen);
+ var nombre = document.createElement('span');
+ nombre.innerHTML = user.name;
+ userLine.appendChild(nombre);
+ }
+ });
+ } else {
+ top.location.href = 'http://www.facebook.com/dialog/oauth?client_id=124829930933291&redirect_uri='+urlencode('http://apps.facebook.com/bitcoin_price/');
+ }
+ });

0 comments on commit 1246292

Please sign in to comment.