Hola, yo estoy en haciendo algo similar a la primera parte de lo tuyo, que el usuario pueda registrarse usuado su cuenta de facebook o twitter. Hasta ahora solo lo e conseguido con facebook, twitter me esta comenzando a comlicar un poco pero te voy a tratar de explicar lo de facebook de la forma mas facil y practica que pueda.
Para comensar de tejo algunos links, a mi me sirvieron muchisimo:
Documentacion Oficial
-
https://developers.facebook.com/docs/sdks/ Post que hablan hacer que facebook, y sus sdk (remendado, en español)
-
http://chusete.es/2011/09/13/introduccion-a-la-programacion-en-facebook/ -
http://chusete.es/2011/09/16/introduccion-a-la-programacion-facebook-ii/ -
http://chusete.es/2011/09/18/introduccion-a-la-programacion-en-facebook-iii/ -
http://chusete.es/2011/09/22/introduccion-a-la-programacion-en-facebook-iv/ -
http://chusete.es/2011/09/23/introduccion-a-la-programacion-en-facebook-v/y ahora si te muestro mi solucion:
Primero que nada debes registrar tu aplicacion en facebook,
aquiahora debes crear un archivo html llamado channel que contenga:
Código HTML :
<script src="http://connect.facebook.net/es_ES/all.js"></script>
Ahora debes inicializar con javascript
Código HTML :
<script src="http://connect.facebook.net/es_ES/all.js"></script>
<div id="fb-root"></div>
<script>
// se inicia la coneccion con facebook
FB.init({
appId : 'ID DE TU APLICACION',
status : true, // check login status
cookie : true, // enable cookies to allow the server to access the session
xfbml : true, // parse XFBML
channelURL : 'channel.html', // channel.html
oauth : true // enable OAuth 2.0
});
</script>
Lo Primero es un enlace que llamara a una funcion javaScript
Código HTML :
<a href="#" onclick="InicioFacebook()">Iniciar Sesion con Facebook</a>
La funcion se encargara de ver el estado de la sesion, si esque se a iniciado sesión, y si se han consedido los permisos
Código Javascript :
function InicioFacebook () {
FB.getLoginStatus(function(response) {
if (response.authResponse) {
window.location = 'http://<?php echo $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] ?>?login=facebook';
} else {
solicitarPermisos();
}
});
}
function solicitarPermisos () {
var cb = function(response) {
if (response.status === 'connected') {
window.location = 'http://<?php echo $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] ?>?login=facebook';
} else {
}
};
// si quieres agregar mas permisos los pones en scope
// separando con una coma ( , ), como por ejemplo para
// email y escribir en el muro seria scope: 'email,publish_stream'
// averigua mas sobre esto en la documentacion
FB.login(cb, { scope: 'email' });
}
ahora pasamos al lado php, ( esta parte no me acomo mucho porque debi hacrlo masomenos de las misma manera en que ya estaban echas las cosas, un verdadero asco..), pero continuemos.
estar todo bien y los permisos concedidos la pagina se recarga especificando en la url que que se iniciara sesión con una cuenta de facebook.
primero verificamos la variable login y vemos cual es su valor.
Código PHP :
<?php
if (isset($_GET[login])) {
switch ($_GET[login]) {
case 'facebook':
loginFacebook();
break;
// ..............................
}
}
?>
de ir todo correcto llama a la funcion loginFacebook(), donde terminara es asunto pero primero necesitas el sdk php de facebook, el que hace uso de cURL y JSON, cosa que supe por ningún lado y hacia que no funcionara hasta que ente un poquito en el código para descubrirlo...
en funcion deveras inicializar otravez y luego podras acceder a a toda la informacion del usuario segun los permidos solicitados.
Código PHP :
function loginFacebook() {
// el sdk de facebook requiere cURL y JSON
require_once("src/facebook.php");
$config = array(
'appId' => 'ID',
'secret' => 'SECRET',
'fileUpload' => false // optional
);
$facebook = new Facebook($config);
echo '<br> obtener datso usuario<br>';
$user_profile = $facebook->api('/me', 'GET');
echo 'id: ' . $user_profile['id'];
echo '<br>Nombre: ' . $user_profile['first_name'] . ' ' . $user_profile['last_name'];
echo '<hr>Toda la Informacion disponible<br>';
echo '<pre>';
print_r($user_profile);
echo '</pre>';
}
y bueno creo que eso seria todo, ahora lo veo muy fácil y sencillo pero la verdad es que significo mucho trabajo e investigación para mi.
Espero sea de ayuda, y cualquier duda, consulta, corrección o sugerencia agrédanme el favor de comunicármela, y paso el dato de que si alguien sabe como conseguir lo mismo con twitter me lo diga de con urgencia por favor...