FYI
The problem is that in the facebook air sdk there is a constant:
public static var LOGIN_SUCCESS_URL:String
= 'http://www.facebook.com/connect/login_success.html'; ...
and in MobileLoginWindow of the sdk:
protected function handleLocationChange(event:Event):void
{
var location:String = webView.location;
if
(location.indexOf(FacebookURLDefaults.LOGIN_FAIL_URL) == 0 ||
location.indexOf(FacebookURLDefaults.LOGIN_FAIL_SECUREURL) == 0)
{
webView.removeEventListener(Event.COMPLETE,
handleLocationChange);
webView.removeEventListener(LocationChangeEvent.LOCATION_CHANGE,
handleLocationChange);
loginCallback(null,
FacebookDataUtils.getURLVariables(location).error_reason);
userClosedWindow = false;
webView.dispose();
webView=null;
}
else if
(location.indexOf(FacebookURLDefaults.LOGIN_SUCCESS_URL) == 0 ||
location.indexOf(FacebookURLDefaults.LOGIN_SUCCESS_SECUREURL) == 0)
{
webView.removeEventListener(Event.COMPLETE,
handleLocationChange);
webView.removeEventListener(LocationChangeEvent.LOCATION_CHANGE,
handleLocationChange);
loginCallback(FacebookDataUtils.getURLVariables(location), null);
userClosedWindow = false;
webView.dispose();
webView=null;
}
}
As facebook is now sending
"http://m.facebook.com/connect/login_success.html"
this is not working anymore... So it has nothing to do with the Flex or Air
SDKs...
To fix it:
1. download the source of the api...
2. add to FacebookURLDefaults.as
public static var LOGIN_URL_MOBILE:String
= 'http://m.facebook.com/connect/login_success.html';
public static var LOGIN_SECUREURL_MOBILE:String
= 'https://m.facebook.com/connect/login_success.html';
3. change MobileLoginWindow.as
protected function handleLocationChange(event:Event):void
{
var location:String = webView.location;
if
(location.indexOf(FacebookURLDefaults.LOGIN_FAIL_URL) == 0 ||
location.indexOf(FacebookURLDefaults.LOGIN_FAIL_SECUREURL) == 0 ||
location.indexOf(FacebookURLDefaults.LOGIN_URL_MOBILE) == 0 ||
location.indexOf(FacebookURLDefaults.LOGIN_SECUREURL_MOBILE) == 0)
{
webView.removeEventListener(Event.COMPLETE,
handleLocationChange);
webView.removeEventListener(LocationChangeEvent.LOCATION_CHANGE,
handleLocationChange);
loginCallback(null,
FacebookDataUtils.getURLVariables(location).error_reason);
userClosedWindow = false;
webView.dispose();
webView=null;
}
else if
(location.indexOf(FacebookURLDefaults.LOGIN_SUCCESS_URL) == 0 ||
location.indexOf(FacebookURLDefaults.LOGIN_SUCCESS_SECUREURL) == 0 ||
location.indexOf(FacebookURLDefaults.LOGIN_SECUREURL_MOBILE) == 0 ||
location.indexOf(FacebookURLDefaults.LOGIN_URL_MOBILE) == 0)
{
webView.removeEventListener(Event.COMPLETE,
handleLocationChange);
webView.removeEventListener(LocationChangeEvent.LOCATION_CHANGE,
handleLocationChange);
loginCallback(FacebookDataUtils.getURLVariables(location), null);
userClosedWindow = false;
webView.dispose();
webView=null;
}
}
4. Build SWC and replace the old one
Christian
--
View this message in context:
http://apache-flex-users.2333346.n4.nabble.com/Facebook-Support-in-Flex-facebook-actionscript-api-broken-Facebooks-October-2013-Breaking-Changes-tp2921p2941.html
Sent from the Apache Flex Users mailing list archive at Nabble.com.