Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //FEDERATED LOGIN
- private function login(provider:String):void
- {
- toggleIntro();
- activityDialog = Dialog.service.create(
- new ActivityBuilder()
- .setTheme( new DialogTheme( DialogTheme.DEVICE_DEFAULT_DARK ))
- .build()
- );
- activityDialog.show();
- trace("federated login init");
- var header:URLRequestHeader = new URLRequestHeader("Content-Type", "application/json");
- var obj:Object = new Object();
- obj.continueUri = FIREBASE_REDIRECT_URL;
- obj.providerId = provider;
- var rq:URLRequest = new URLRequest(FIREBASE_CREATE_AUTH_URL);
- rq.method = URLRequestMethod.POST;
- rq.data = JSON.stringify(obj);
- rq.requestHeaders.push(header);
- var l:URLLoader = new URLLoader();
- l.addEventListener(Event.COMPLETE, authUrlCreated);
- l.addEventListener(IOErrorEvent.IO_ERROR, handleIOError);
- l.load(rq);
- }
- private function handleIOError(e:IOErrorEvent):void
- {
- trace("IO Error" + e.currentTarget.data);
- if (signingIn)
- {
- phaseOut(password_txt, password_txt.x + ((stage.stageWidth / 2) - password_txt.width));
- phaseIn(email_txt, (stage.stageWidth - email_txt.width) / 2);
- Dialog.service.toast("Your login credentials are incorrect.");
- }
- }
- private function authUrlCreated(e:Event):void
- {
- var raw:Object = JSON.parse(e.currentTarget.data);
- sessionId = raw.sessionId;
- swv = new StageWebView();
- swv.addEventListener(LocationChangeEvent.LOCATION_CHANGE, swvLocationChange);
- swv.stage = this.stage;
- swv.viewPort = new Rectangle(0, 0, stage.stageWidth, stage.stageHeight);
- activityDialog.dismiss();
- swv.loadURL(raw.authUri);
- }
- private function swvLocationChange(e:LocationChangeEvent):void
- {
- var location:String = swv.location;
- if (location.indexOf("/__/auth/handler?code=") != -1 || location.indexOf("/__/auth/handler?state=") != -1 || location.indexOf("/__/auth/handler#state=") != -1 && location.indexOf("error") == -1)
- {
- swv.removeEventListener(LocationChangeEvent.LOCATION_CHANGE, swvLocationChange);
- swv.dispose();
- trace("stagewebciew should be gone..");
- requestUri = location;
- getAccountInfo();
- }
- }
- private function getAccountInfo():void
- {
- var head:URLRequestHeader = new URLRequestHeader("Content-Type", "application/json");
- var obj:Object = new Object();
- obj.requestUri = requestUri;
- obj.sessionId = sessionId;
- obj.returnSecureToken = true;
- var rq:URLRequest = new URLRequest(FIREBASE_VERIFY_ASSERTION_URL);
- rq.method = URLRequestMethod.POST;
- rq.data = JSON.stringify(obj);
- rq.requestHeaders.push(head);
- var l:URLLoader = new URLLoader();
- l.addEventListener(Event.COMPLETE, registerComplete);
- l.addEventListener(IOErrorEvent.IO_ERROR, handleIOError);
- l.load(rq);
- }
- private function registerComplete(e:Event):void
- {
- trace("Registration complete:");
- trace(e.currentTarget.data);
- var rawData:Object = JSON.parse(e.currentTarget.data);
- idToken = rawData.idToken;
- authToken = rawData.oauthIdToken;
- uid = rawData.localId;
- trace("Attempting to get an access token..");
- //sUBMIT REFRESH token.
- appSavedData = new Object();
- appSavedData.refreshToken = rawData.refreshToken;
- var fs:FileStream = new FileStream();
- fs.open(appSaveFile, FileMode.WRITE);
- fs.writeObject(appSavedData);
- fs.close();
- handleRefreshToken(rawData.refreshToken);
- }
- private function handleRefreshToken(refreshToken:String):void
- {
- var header:URLRequestHeader = new URLRequestHeader("Content-Type", "application/json");
- var myObject:Object = new Object();
- myObject.grant_type = "refresh_token";
- myObject.refresh_token = refreshToken;
- var request:URLRequest = new URLRequest("https://securetoken.googleapis.com/v1/token?key="+FIREBASE_API_KEY);
- request.method = URLRequestMethod.POST;
- request.data = JSON.stringify(myObject);
- request.requestHeaders.push(header);
- var loader:URLLoader = new URLLoader();
- loader.addEventListener(Event.COMPLETE, refreshTokenLoaded);
- loader.addEventListener(IOErrorEvent.IO_ERROR, handleIOError);
- loader.load(request);
- }
- private function refreshTokenLoaded(e:Event):void
- {
- e.target.removeEventListener(Event.COMPLETE, refreshTokenLoaded);
- var rawData:Object = JSON.parse(e.currentTarget.data);
- if (rawData.access_token == null)
- {
- toggleContent(0);
- toggleIntro();
- Dialog.service.toast("There was a problem logging you in. Please try again.");
- FirebaseCrash.service.report(new Error("Login Error", 0));
- }
- else
- {
- authToken = rawData.access_token;
- trace("REFRESH TOKEN LOADED.");
- trace(e.target.data);
- trace("Init tutorial");
- if (signingIn)
- {
- toggleContent(CONTENT_FRAME);
- toggleHomeScreen();
- }
- else
- {
- //Init bio fill//
- toggleProfile(true);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement