Forums Développement Multimédia

Aller au contenu

actionscript facebook api loginBox

CODE Actionscript

2 réponses à ce sujet

#1 spout07

    Ceinture Blanche

  • Members
  • Pip
  • 3 messages

Posté 01 March 2012 - 17:53 PM

Bonjour,

Je fait actuellement des tests pour développer une application de bureau avec AIR. J'ai besoin, dans mon application, de logger mon utilisateur à Facebook. j'ai trouvé l'API que Facebook a développé avec Adobe pour faire ça.

J'ai suivi les tutos que j'ai trouvé sur le site d'adobe et tout fonctionne parfaitement.
Cependant, j'ai un petit problème au moment de logger mon utilisateur : la boite de login apparait dans une fenêtre système comme ici :

http://wwwimages.ado..._pt1/fig_22.jpg

J'aimerais que cette fenêtre système n'apparaisse pas.

J'ai réussi à désactivé la fenetre système de mon application mais pas du pop-up de login. J'ai beaucoup cherché avec google, sur des forums, en français, en anglais, etc mais je ne trouve pas de réponse. est-ce que quelqu'un aurais la solution ou une piste ??
merci d'avance

#2 spout07

    Ceinture Blanche

  • Members
  • Pip
  • 3 messages

Posté 07 March 2012 - 10:04 AM

Bon, la solution serait de ne pas passer par l'API actionscript facebook mais d'utiliser un objet HTMLLoader pour loader l'URL de la page de login. Je fait des tests et je reviens avec un peu de code si ça intéresse certains...

#3 spout07

    Ceinture Blanche

  • Members
  • Pip
  • 3 messages

Posté 16 March 2012 - 11:51 AM

Comme je vous le disais, la solution est de ne pas passer par l'API et d'utiliser un HTMLLoader. Voici une partie de mon code :




public static var APP_ID:String = "MyAppID"; //Place your application id here
public static var LOGIN_URL:String = "https://www.facebook.com/dialog/oauth";
public static var LOGIN_SUCCESS_URL:String = 'http://www.facebook.com/connect/login_success.html';
public static var LOGIN_SUCCESS_SECUREURL:String = 'https://www.facebook.com/connect/login_success.html';
public var ACCESS_TOKEN:String;
private var extendedPermissions:Array = ['user_photos', 'publish_stream'];
private var htmlPage:HTMLLoader;

addChild(htmlPage);
login(LOGIN_URL, extendedPermissions);

private function login($login_URL:String, $extendedPermissions:Array = null):void{
   var vars:URLVariables = new URLVariables();
   vars.client_id = APP_ID;
   vars.redirect_uri = LOGIN_SUCCESS_URL;
   vars.display = 'popup';
   vars.type = 'user_agent';
   vars.response_type = 'token code';
   vars.scope = $extendedPermissions.join(',');

   urlToLoad = new URLRequest($login_URL);
   urlToLoad.method = URLRequestMethod.GET;
   urlToLoad.data = vars;
 
   htmlPage.load(urlToLoad);
   htmlPage.addEventListener(Event.LOCATION_CHANGE, andleLocationChange, false, 0, true);
  }

private function andleLocationChange($e:Event):void{
   if (htmlPage.location.indexOf (LOGIN_SUCCESS_URL) == 0 || htmlPage.location.indexOf(LOGIN_SUCCESS_SECUREURL) == 0){
          loginCallback(getURLVariables());
   }
}

private function loginCallback(response:Object):void{
   ACCESS_TOKEN = response.access_token;
   removeChild(htmlPage);
   //...suite
}

// récupération des paramètres renvoyé
private function getURLVariables():URLVariables {
   var params:String;

   if (htmlPage.location.indexOf('?') != -1) {
          params = htmlPage.location.slice(htmlPage.location.indexOf('?')+1);
   } else if (htmlPage.location.indexOf('#') != -1) {
          params = htmlPage.location.slice(htmlPage.location.indexOf('#')+1);
   }

   var vars:URLVariables = new URLVariables();
   if (params != null) { vars.decode(params); }
                       
   return vars;
}
 


Pour expliquer un peu :

J'utilise une fonction login pour construire une requette URL avec les varialbes nécessaire. Je charge ensuite cette requette dans un URLLoader qui me permet d'afficher de l'HTML et donc ma boite de login. J'ajoute un écouteur pour repérer les changement d'URL et la fin de ma connexion( ou pas ).
Une fois connecté je récupère l'acces token en décortiquant les paramètres renvoyé par mon objet HTMLLoader.

Le procédé pour la déconnexion est similaire mais vous n'êtes pas obligé d'afficher un HTMLLoader.

En espérant que ça serve a quelqu'un



1 utilisateur(s) li(sen)t ce sujet

0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)

authorised training centre

Centre de Formation Mediabox - Adobe et Apple Authorised Training Center.

Déclaré auprès de la Direction du Travail et de la Formation Professionnelle

Mediabox : SARL au capital de 62.000€ - Numéro d'activité : 11 75 44555 75 - SIRET : 49371646800035

MEDIABOX, 23, rue de Bruxelles, 75009 PARIS

FFP