Я исправил это через Event.COMPLETE для моего Droid 2 и Nexus One. Я даже не получаю LocationChangeEvent.LOCATION_CHANGING на своем настольном компьютере или Android, но в итоге Event.COMPLETE получает шейд oauth_verifier, который будет добавлен в него. Я могу разобрать это из свойства местоположения StageWebView, отправить, и я готов идти. Из паранойи я оставляю все 3 события там на всякий случай. Если вам интересно, вот различия в событиях перенаправления между ОС через Марка Локри: http://kb2.adobe.com/cps/895/cpsid_89526.html.
Кроме того, предполагается, что ваше приложение фактически зарегистрировано как «веб-приложение», а не как приложение для настольного компьютера, в противном случае вам придется использовать пин-код, и вы не получите oauth_verifier в URL-адресе ответа. Да, вы можете создать URL-адрес обратного вызова для чего угодно; просто убедитесь, что это стандартный URL-адрес, который, как мы надеемся, не равен 404.
stageWebView = new StageWebView();
stageWebView.addEventListener(LocationChangeEvent.LOCATION_CHANGING, onLocationChange);
stageWebView.addEventListener(LocationChangeEvent.LOCATION_CHANGE, onLocationChange);
stageWebView.addEventListener(Event.COMPLETE, onLocationChange);
stageWebView.stage = stage;
stageWebView.viewRect = new Rectangle(0, 0, stage.stageWidth, stage.stageHeight);
// loaded from an OAuth library
// try http://code.google.com/p/oauth-as3/ or Tweetr http://wiki.swfjunkie.com/tweetr
stageWebView.loadURL(authenticationURL);
var code:String;
function onLocationChange(event:Event):void
{
var location:String;
if(event is LocationChangeEvent)
{
location = LocationChangeEvent(event).location;
}
else
{
location = _stageWebView.location;
}
var search:String = "oauth_verifier=";
var ver:String = location;
var startIndex:int = ver.lastIndexOf(search);
if(startIndex != -1)
{
code = ver.substr(startIndex + search.length, location.length);
// remove listeners and dispatch success here
}
}