Hola a todos.
Esto es en gran medida gracias a: psyked84
A veces necesitamos verificar o validar que permisos tiene nuestros usuarios facebook sobre nuestra aplicación.
Busque información en el API de Facebook para AS3 y encontré la propiedad availablePermissions de la clase FacebookSession. Sin embargo, cuando obtenía este dato, me salía null. Supongo yo que ese resultado null salía por hacer el login de facebook no con el API de AS3 sino con el SDK JS de Facebook.
Por esta razón la unica forma que encontré la solución en internet fue por medio de FQL (Consultas SQL sobre las tablas de facebook). Con esto ya me funcionó.
Quizás a ustedes les sirva este código que organicé para que validen en el momento que ustedes deseen de la aplicación los permisos del usuario.
A continuación coloco los pasos a seguir (Funciona 100%, si deseen opinen al respecto).
PASO CERO
Agregar el siguiente código para hacer pruebas sobre tu flash, agregando dinámicamente un textfield, y en este se imprimiran las pruebas.
//este textfield para pruebas
var tf:TextField = new TextField();
tf.autoSize = TextFieldAutoSize.LEFT;
tf.border = true;
tf.textColor = 0xFF0000;
addChild(tf);
tf.appendText('haber');
PASO PRIMERO.
Colocar al principio de nuestro código del FLA:
var arrayPermisos:Array = new Array(); //Aqui se guardaran los permisos que obtienen de facebook
var arrayValidarPermisos:Array = new Array(); //Aqui se guardara por cada item la validacion que quieremos realizar
arrayValidarPermisos.push({permiso:'publish_stream', estado:'1'}) //el primer elemento del array: es el nombre del permiso, y el segundo: el estado
arrayValidarPermisos.push({permiso:'offline_access', estado:'1'})
arrayValidarPermisos.push({permiso:'user_location', estado:'1'})
arrayValidarPermisos.push({permiso:'user_photos', estado:'1'})
Como vemos cada item del array arrayValidarPermisos es una validación, podemos colocar desde 1 item hasta las validaciones que queramos. En este caso estamos agregando 3 validaciones sobre 3 permisos(logicamente 3), y estamos validando que estos permisos tengan estado 1, es decir, aprobado por el usuario. Si deseamos validar que el usuario no tenga algún permiso, le colocamos 0.
Es importante tener presente que los nombres de los permisos deben ser identicos a como estan definidos en facebook en la pagina de permisos de facebook.
PASO SEGUNDO
Seguido del codigo anterior agregaremos:
var textFQLPermisos:String = ""
for(var k = 0; k < arrayValidarPermisos.length; k++){
textFQLPermisos += arrayValidarPermisos[k].permiso + ",";
}
textFQLPermisos = textFQLPermisos.substr(0, textFQLPermisos.length - 1);
Como observamos el código anterior crea un string con los items separados por comas, este será utilizado para realizar la consulta FQL de Facebook.
PASO TERCERO
Colocar donde especifiquemos en nuestra aplicación el siguiente código para hacer la validación:
Facebook.fqlQuery( "SELECT " + textFQLPermisos + " FROM permissions WHERE uid = me()", onFQLResponsePermisos );
Si vemos, estamos agregando a la consulta la variable string con los permisos a validar.
PASO CUARTO
Agregar el siguiente código, si ustedes quieren, al final del todo el código que tengan. La mayoría de programadores colocan las funciones que obtienen las respuestas POST antes de realizar los llamados. Pero sugiero solo para este caso, colocarlo al final (porque es una prueba, si quieren despues lo pueden cambiar donde consideren mejor :P).
function onFQLResponsePermisos( success:Object, failure:Object ):void {
if ( success ) {
//
arrayPermisos = new Array();
tf.appendText( 'successs ');
for ( var i:String in success[ 0 ]) {
tf.appendText( i + "==" + success[ 0 ][ i ]);
arrayPermisos.push({permiso:i, estado:success[ 0 ][ i ]});
}
} else {
tf.appendText( "FQL query failed." );
}
if(validarPermisos(arrayValidarPermisos, arrayPermisos)){
tf.appendText('OKFINALVALIDACION');
}
else{
tf.appendText('FALTOPERMISOSFINAL');
}
}
function validarPermisos(arrayValidarPermisos, arrayPermisos) {
for (var j=0; j < arrayValidarPermisos.length; j++){
for (var i=0; i<arrayPermisos.length; i++) {
if (arrayPermisos[i].permiso == arrayValidarPermisos[j].permiso) {
tf.appendText("val: " + arrayPermisos[i].estado + " val2:" + arrayValidarPermisos[j].estado + "\n");
if(arrayPermisos[i].estado != arrayValidarPermisos[j].estado){
tf.appendText(arrayPermisos[i].permiso + " valaqui: " + arrayPermisos[i].estado + "::val2aqui:" + arrayValidarPermisos[j].estado + ":\n");
return false;
}
}
}
}
return true;
}
Lo anterior contiene dos funciones, la primera: consiste en la obtención de respuesta de facebook cuando se realiza el FQL.
La segunda función tiene que ver con la validación de los permisos. Si observamos, todas las validaciones se tienen que cumplir a plenitud para que de una respuesta positiva. Si alguna validacion no se cumple la validación da como resultado, falso.
NOTA: El código AS3 es el que esta en negrita.
Espero que esto les sirva.
Sean felices! :) Y opinen! ;)
A aquel que se ha "matado" encontrando la solución. Le doy las gracias mediante este blog. Y lo que aprendí de él, lo comparto con todos.
Busca lo que quieras
Suscribirse a:
Enviar comentarios (Atom)
Palabras Clave
.NET
(93)
AJAX
(2)
ajaxcontroltoolkit
(2)
Algoritmos
(1)
android
(1)
Angular
(1)
Arrays
(1)
AS2 o ActionScript 2.0
(1)
AS3 o ActionScript 3.0
(64)
ASP
(7)
ASP.NET
(3)
Azure
(1)
Azure DevOps
(2)
Backup
(2)
Batch
(4)
blogger
(1)
Browser Support
(2)
C#
(53)
Charts
(1)
Chorme extensions
(1)
Chrome
(3)
cmd
(18)
código postal
(1)
Colombia tips
(1)
command
(1)
Conexion remota
(1)
Controles Web .NET
(24)
Cookies
(1)
cordova
(1)
CSS
(14)
CSV
(5)
Cufon
(1)
DateTime
(2)
deployment
(2)
Desarrollo movil
(2)
Desarrollo web
(5)
Diseño
(4)
DNN o DotNetNuke
(5)
docker
(1)
Encuestas
(1)
Entity Framework
(1)
Error
(1)
Eval
(2)
Excel
(4)
Expresiones regulares
(2)
Facebook
(14)
fechas
(1)
Fiddler
(1)
FileUpload
(1)
Filezilla
(1)
Firefox
(2)
Flash
(9)
Fonts
(3)
FQL
(1)
frameworks
(2)
Futuro de la web
(1)
git
(1)
Google Code
(13)
Google Maps
(4)
hackintosh
(3)
hazard 10.6.2
(3)
herramientas para developers
(1)
highchart
(1)
Hilos
(2)
Hosting Windows
(18)
HTML
(38)
HTML5
(6)
IDE
(1)
IE
(2)
IE9
(1)
IIS
(13)
imagenes
(3)
jasmine
(2)
java
(1)
jqgrid
(2)
Jquery y Javascript
(90)
jquery-ui
(5)
jQueryMobile
(1)
JSON
(1)
knockout
(4)
library
(1)
Link Interesantes
(2)
List
(1)
Macro
(2)
Matemáticas
(2)
Membership
(6)
Memoria
(1)
Mis Experiencias
(3)
momentjs
(1)
ms-dos
(1)
MSN
(1)
MVC
(1)
MVC4
(3)
MySQL
(2)
node.js
(4)
Notepad++
(3)
Notificaciones
(1)
ObjectDataSource
(2)
Online
(2)
Opinión
(4)
OSX
(3)
Parallels Plesk Panel
(1)
petapoco
(1)
PhantomJS
(1)
PHP
(4)
Porqué este blog
(1)
Powershell
(1)
Razor
(3)
Redes
(2)
REGEX
(4)
REST
(1)
SDK Android
(1)
Seguridad
(1)
SelectParameters
(1)
Selenium
(2)
sencha
(3)
sencha cmd
(2)
SEO
(1)
SMTP
(2)
Software útil
(8)
Solución
(1)
Soporte
(1)
SQL
(15)
SQL Server
(58)
SQLite
(2)
Store Procedures
(20)
String
(5)
Testing Code
(2)
texto
(2)
tips de datos
(1)
tips de desarrollo
(1)
TutoFaceAS3
(4)
TutoProAS3
(4)
Tutoriales
(7)
Tweenlite effects
(3)
Últimas noticias
(1)
unit testing
(1)
usb
(1)
VBA
(1)
Video
(1)
virus
(1)
Web API
(2)
Web Browsers
(1)
Web Forms
(7)
web.config
(1)
Webmaster
(8)
Webmatrix
(1)
webrole
(1)
webservices
(1)
webstorm
(1)
Win Forms
(5)
Windows
(21)
Windows 7
(1)
Windows 8
(1)
XML
(2)
Youtube API
(2)
No hay comentarios:
Publicar un comentario