예제 #1
0
        /// <summary>
        /// Ons the create.
        /// </summary>
        /// <param name="savedInstanceState">Saved instance state.</param>
        protected override void OnCreate(Bundle savedInstanceState)
        {
            TabLayoutResource = Resource.Layout.Tabbar;
            ToolbarResource   = Resource.Layout.Toolbar;

            base.OnCreate(savedInstanceState);

            global::Xamarin.Forms.Forms.Init(this, savedInstanceState);

            #region [ Facebook ]

            FacebookSdk.SdkInitialize(ApplicationContext);
            callbackManager = CallbackManagerFactory.Create();

            var loginCallback = new FacebookCallback <LoginResult>
            {
                HandleSuccess = loginResult => {
                    var facebookToken = AccessToken.CurrentAccessToken.Token;
                },
                HandleCancel = () => {
                },
                HandleError  = loginError => {
                }
            };

            LoginManager.Instance.RegisterCallback(callbackManager, loginCallback);

            #endregion



            LoadApplication(new App());
        }
예제 #2
0
        protected override void OnCreate(Bundle bundle)
        {
            TabLayoutResource = Resource.Layout.Tabbar;
            ToolbarResource   = Resource.Layout.Toolbar;

            base.OnCreate(bundle);
            global::Xamarin.Forms.Forms.Init(this, bundle);

            //facebook implementation
            callbackManager = CallbackManagerFactory.Create();

            var loginCallback = new FacebookCallback <LoginResult>
            {
                HandleSuccess = (loginResult) =>
                {
                    //proceed next page
                    App.ProceedToHome();
                },
                HandleCancel = () =>
                {
                    //handle cancel
                },
                HandleError = (loginError) =>
                {
                    //handle error
                }
            };

            LoginManager.Instance.RegisterCallback(callbackManager, loginCallback);

            LoadApplication(new App());
            FirebaseApp.InitializeApp(this);
        }
예제 #3
0
        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);
            RequestWindowFeature(WindowFeatures.NoTitle);
            SetContentView(Resource.Layout.AuthActivity);
            DroidDAL.HockeyAppRegister(this);

            _view = FindViewById <AuthView>(Resource.Id.auth_view);

            InitStatusBar();

            ThemeHolder.Init(DataService.RepositoryController.RepositoryThemes);
            _interactor = new InteractorAuth(new AuthController(ConnectionController.GetInstance(), WebMsgParser.ParseResponseAuth), new ValidationRA());
#if MOCK
            _presenter = new PresenterAuthMOCK(_view, _interactor, new RouterAuth(this), FacebookCallLoginAction, GoogleCallLoginAction, VkCallLoginAction, OkCallLoginAction,
                                               new AuthStylesHolderDroid <GlobalControlsTheme>(new ThemeParser <GlobalControlsTheme>()), DataService.RepositoryController.RepositoryRA.LangRA);
#else
            _presenter = new PresenterAuth(_view, _interactor, new RouterAuth(this), FacebookCallLoginAction, GoogleCallLoginAction, VkCallLoginAction, OkCallLoginAction,
                                           new AuthStylesHolderDroid <GlobalControlsTheme>(new ThemeParser <GlobalControlsTheme>()), DataService.RepositoryController.RepositoryRA.LangRA);
#endif
            _presenter.SetConfig();

            _callbackManager  = CallbackManagerFactory.Create();
            _facebookCallback = new FacebookCallback(_interactor);
            LoginManager.Instance.RegisterCallback(_callbackManager, _facebookCallback);
            _interactor.OnSocialLogOut += SocialLogOut;
        }
예제 #4
0
        protected override void OnElementChanged(ElementChangedEventArgs <Button> e)
        {
            base.OnElementChanged(e);

            _activity = this.Context as MainActivity;

            var loginButton = new LoginButton(this.Context);

            var facebookCallback = new FacebookCallback <LoginResult>
            {
                HandleSuccess = shareResult =>
                {
                    Action <string> local = SignInViewModel.PostSuccessFacebookAction;
                    if (local != null)
                    {
                        local(shareResult.AccessToken.Token);
                    }
                }
                ,
                HandleCancel = () => {
                    Console.WriteLine("HelloFacebook: Canceled");
                },
                HandleError = shareError => {
                    Console.WriteLine("HelloFacebook: Error: {0}", shareError);
                }
            };

            loginButton.RegisterCallback(MainActivity.CallbackManager, facebookCallback);
            base.SetNativeControl(loginButton);
        }
        protected override void OnElementChanged(ElementChangedEventArgs <Button> e)
        {
            base.OnElementChanged(e);

            var activity = Context as MainActivity;

            var formsButton = e.NewElement as FacebookLoginButton;

            var loginButton = new LoginButton(Context);

            loginButton.SetReadPermissions("public_profile");

            var facebookCallback = new FacebookCallback()
            {
                HandleSuccess = (LoginResult loginResult) =>
                {
                    formsButton.OnLoginSuccess(loginResult.AccessToken.Token);
                },

                HandleCancel = () =>
                {
                    formsButton.OnLoginCancel();
                },

                HandleError = (FacebookException exception) =>
                {
                    formsButton.OnLoginError(exception.Message);
                }
            };

            loginButton.RegisterCallback(activity.FacebookCallbackManager, facebookCallback);
            SetNativeControl(loginButton);
        }
예제 #6
0
        protected async override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            FacebookSdk.SdkInitialize(this);
            SetContentView(Resource.Layout.Main);

            FindViewById <LoginButton>(Resource.Id.login_button).SetReadPermissions("email");
            callbackManager = CallbackManagerFactory.Create();

            var loginCallback = new FacebookCallback <LoginResult>
            {
                HandleSuccess = SignInWithFacebookToken,
                HandleCancel  = () => Log.Debug(
                    Application.PackageName,
                    "Canceled"),
                HandleError = error => Log.Error(
                    Application.PackageName,
                    Java.Lang.Throwable.FromException(error),
                    "No access")
            };

            LoginManager.Instance.RegisterCallback(callbackManager, loginCallback);

            carService   = new CarService();
            tokenTracker = new FacebookTokenTracker(carService)
            {
                HandleLoggedIn  = UpdateButtons,
                HandleLoggedOut = UpdateButtons
            };

            tokenTracker.StartTracking();

            if (carService.GetLoginStatus() == CarService.LoginStatus.NeedsWebApiToken)
            {
                await SignInWithFacebookToken(AccessToken.CurrentAccessToken.Token);
            }

            UpdateButtons();

            searchCar         = FindViewById <AutoCompleteTextView>(Resource.Id.searchCar);
            findCar           = FindViewById <Button>(Resource.Id.findCar);
            showAvailableCars = FindViewById <Button>(Resource.Id.showAvailableCars);

            findCar.Click         += findCar_Click;
            findCar.Enabled        = false;
            searchCar.TextChanged += (sender, e) =>
            {
                if (searchCar.Text.Length > 4)
                {
                    findCar.Enabled = true;
                }
                else
                {
                    findCar.Enabled = false;
                }
            };

            showAvailableCars.Click += (sender, args) => StartActivity(typeof(allAvailableActivity));
        }
예제 #7
0
		private async Task<FacebookAuthenticationResult> getFacebookToken()
		{
			var token = Xamarin.Facebook.AccessToken.CurrentAccessToken;
			if (token != null)
				return new FacebookAuthenticationResult(){ Token = token };
			
			var completion = new TaskCompletionSource<FacebookAuthenticationResult>();
			var loginCallback = new FacebookCallback(completion);
			var activity = Xamarin.Forms.Forms.Context as MainActivity;
			LoginManager.Instance.RegisterCallback (activity.CallbackManager, loginCallback);
			LoginManager.Instance.LogInWithReadPermissions(activity, new string[] { "public_profile", "email", "user_friends" });
			return await completion.Task;
		}
예제 #8
0
        private void InitFacebook()
        {
            FacebookSdk.SdkInitialize(ApplicationContext);
            fbCallbackManager = CallbackManagerFactory.Create();

            var loginCallback = new FacebookCallback <LoginResult>
            {
                HandleSuccess = loginResult => { SetFacebookLoginResult(loginResult.AccessToken); },
                HandleError   = ex => { SetFacebookLoginError(ex); },
                HandleCancel  = () => SetFacebookCancellation()
            };

            LoginManager.Instance.RegisterCallback(fbCallbackManager, loginCallback);
        }
예제 #9
0
        /// <summary>
        /// Signs the into facebook.
        /// </summary>
        /// <returns>Task&lt;FacebookLoginResult&gt;.</returns>
        public async Task <FacebookLoginResult> SignIntoFacebook()
        {
            var login = new FacebookLoginResult();

            if (AccessToken.CurrentAccessToken == null ||
                (AccessToken.CurrentAccessToken != null && AccessToken.CurrentAccessToken.IsExpired))
            {
                // LoginManager.Instance.LogOut();

                var taskCompletionSource = new TaskCompletionSource <FacebookLoginResult>();
                var activity             = Xamarin.Forms.Forms.Context as MainActivity;
                var loginCallback        = new FacebookCallback <LoginResult>
                {
                    HandleSuccess = loginResult =>
                    {
                        UpdateFacebookResult(login);
                        taskCompletionSource.SetResult(login);
                    },
                    HandleCancel = () =>
                    {
                        System.Diagnostics.Debug.WriteLine("fbcancel");
                        UpdateFacebookResult(login, true, false);
                        taskCompletionSource.SetResult(login);
                    },
                    HandleError = loginError =>
                    {
                        System.Diagnostics.Debug.WriteLine("fberror");
                        login.Error = loginError.Message;
                        UpdateFacebookResult(login, true, true);
                        taskCompletionSource.SetResult(login);
                    }
                };

                if (activity == null)
                {
                    return(null);
                }

                //LoginManager.Instance.RegisterCallback(activity.CallbackManager, loginCallback);

                LoginManager.Instance.LogInWithReadPermissions(activity, _readPermissions);

                return(await taskCompletionSource.Task);
            }

            UpdateFacebookResult(login);

            return(login);
        }
예제 #10
0
        void InitFBSettings()
        {
            FacebookSdk.SdkInitialize(this.ApplicationContext);
            callbackManager = CallbackManagerFactory.Create();
            var loginCallback = new FacebookCallback <LoginResult>
            {
                HandleSuccess = loginResult =>
                {
                    var accessToken = AccessToken.CurrentAccessToken;
                    FBGraphRequeest(accessToken, accessToken.UserId);
                },
                HandleCancel = () => { },
                HandleError  = loginError => { }
            };

            LoginManager.Instance.RegisterCallback(callbackManager, loginCallback);
        }
예제 #11
0
        private void SetupFacebookLogin()
        {
            callbackManager  = CallbackManagerFactory.Create();
            facebookLoginBtn = FindViewById <LoginButton>(Resource.Id.facebookLoginBtn);
            facebookLoginBtn.SetReadPermissions("public_profile", "email");
            var loginCallback = new FacebookCallback <LoginResult>
            {
                HandleSuccess = async loginResult =>
                {
                    progress.ShowProgressDialog("Trwa logowanie w aplikacji... Proszê czekaæ");
                    var token = await LoginWithFacebook();

                    if (token != null)
                    {
                        progress.CloseProgressDialog();
                        if (token.UserHasToSetNickName)
                        {
                            GoToActivity(new Intent(this, typeof(StartActivity)));
                        }
                        else
                        {
                            SetUserNameInAppSettings(token.UserName);
                            GoToActivity(new Intent(this, typeof(MainActivity)));
                        }
                    }
                    else
                    {
                        progress.CloseProgressDialog();
                        AlertsService.ShowLongToast(this, "Facebook zwróci³ token, ale coœ posz³o nie tak z logowaniem na serwerze");
                    }
                },
                HandleCancel = () =>
                {
                    progress.CloseProgressDialog();
                    AlertsService.ShowLongToast(this, "Przerwano logowanie z facebookiem");
                },
                HandleError = loginError =>
                {
                    progress.CloseProgressDialog();
                    AlertsService.ShowLongToast(this, "Wyst¹pi³ b³¹d podczas logowania z facebookiem");
                }
            };

            facebookLoginBtn.RegisterCallback(this.callbackManager, loginCallback);
        }
예제 #12
0
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);

            //

            FacebookSdk.SdkInitialize(ApplicationContext);

            callbackManager = CallbackManagerFactory.Create();

            var loginCallback = new FacebookCallback <LoginResult> {
                HandleSuccess = (loginResult) => {
                    UpdateUI();
                    MoveToNextView();
                },
                HandleError = (loginError) => {
                    ShowAlert("Exception", loginError.Message, "確認", (obj) => { });
                    UpdateUI();
                },
                HandleCancel = () => {
                    ShowAlert("Cancel", "取消", "確認", (obj) => { });
                    UpdateUI();
                }
            };

            LoginManager.Instance.RegisterCallback(callbackManager, loginCallback);


            SetContentView(Resource.Layout.facebookloginview);

            profilePictureView = FindViewById <ProfilePictureView> (Resource.Id.facebookloginview_profilePicture);


            var profile = Profile.CurrentProfile;

            if (profile != null)
            {
                profilePictureView.ProfileId = profile.Id;
                MoveToNextView();
            }
        }
예제 #13
0
        protected override void OnCreate(Bundle savedInstanceState)
        {
            TabLayoutResource = Resource.Layout.Tabbar;
            ToolbarResource   = Resource.Layout.Toolbar;

            base.OnCreate(savedInstanceState);
            CrossCurrentActivity.Current.Init(this, savedInstanceState);
            global::Xamarin.Forms.Forms.Init(this, savedInstanceState);
            LoadApplication(new App());

            var loginCallback = new FacebookCallback <LoginResult>
            {
                HandleSuccess = (loginResult) =>
                {
                    Console.WriteLine(loginResult);
                }
            };

            callbackManager = CallbackManagerFactory.Create();
            LoginManager.Instance.RegisterCallback(callbackManager, loginCallback);
        }
예제 #14
0
        public async Task <LoginResult> LoginFacebookAsync()
        {
            var facebookLoginTcs = new TaskCompletionSource <LoginResult>();

            var callbackManager  = CallbackManagerFactory.Create();
            var facebookCallback = new FacebookCallback <LoginResult>
            {
                HandleSuccess = loginResult =>
                {
                    if (loginResult.AccessToken != null)
                    {
                        facebookLoginTcs.TrySetResult(loginResult);
                    }
                    else
                    {
                        var error = new StringBuilder();
                        error.AppendLine("Facebook Client Flow Login Failed");
                        facebookLoginTcs.TrySetException(new Exception(error.ToString()));
                    }
                },
                HandleCancel = () =>
                {
                    //facebookLoginTcs.TrySetException(new Exception("Facebook Client Flow Login Failed"));
                },
                HandleError = loginError =>
                {
                    var error = new StringBuilder();
                    error.AppendLine("Facebook Client Flow Login Failed");
                    error.AppendLine("Message: " + loginError.Message);
                    error.AppendLine("StackTrace: " + loginError.StackTrace);
                    facebookLoginTcs.TrySetException(new Exception(error.ToString()));
                }
            };

            LoginManager.Instance.RegisterCallback(callbackManager, facebookCallback);
            LoginManager.Instance.LogInWithReadPermissions(CrossCurrentActivity.Current.Activity, new[] { "public_profile" });

            return(await facebookLoginTcs.Task);
        }
예제 #15
0
        private void ObtainAccessToken(string[] permissionNames)
        {
            lock (LoginLocker)
            {
                if (HasValidAccessToken)
                {
                    SensusServiceHelper.Get().Logger.Log("Already have valid Facebook access token. No need to initialize.", LoggingLevel.Normal, GetType());
                }
                else
                {
                    #region ensure that facebook sdk is initialized
                    if (FacebookSdk.IsInitialized)
                    {
                        SensusServiceHelper.Get().Logger.Log("Facebook SDK is already initialized.", LoggingLevel.Normal, GetType());
                    }
                    else
                    {
                        SensusServiceHelper.Get().Logger.Log("Initializing Facebook SDK.", LoggingLevel.Normal, GetType());
                        FacebookSdk.SdkInitialize(Application.Context);
                        Thread.Sleep(5000);  // give sdk intialization a few seconds to read the access token
                    }
                    #endregion

                    if (HasValidAccessToken)
                    {
                        SensusServiceHelper.Get().Logger.Log("Facebook access token read from cache.", LoggingLevel.Normal, GetType());
                    }
                    else
                    {
                        ManualResetEvent loginWait        = new ManualResetEvent(false);
                        bool             loginCancelled   = false;
                        string           accessTokenError = null;

                        #region prompt user to log in from main activity
                        (SensusServiceHelper.Get() as AndroidSensusServiceHelper).RunActionUsingMainActivityAsync(mainActivity =>
                        {
                            try
                            {
                                FacebookCallback <LoginResult> loginCallback = new FacebookCallback <LoginResult>
                                {
                                    HandleSuccess = loginResult =>
                                    {
                                        SensusServiceHelper.Get().Logger.Log("Facebook login succeeded.", LoggingLevel.Normal, GetType());
                                        AccessToken.CurrentAccessToken = loginResult.AccessToken;
                                        loginWait.Set();
                                    },

                                    HandleCancel = () =>
                                    {
                                        SensusServiceHelper.Get().Logger.Log("Facebook login cancelled.", LoggingLevel.Normal, GetType());
                                        AccessToken.CurrentAccessToken = null;
                                        loginCancelled = true;
                                        loginWait.Set();
                                    },

                                    HandleError = loginResult =>
                                    {
                                        SensusServiceHelper.Get().Logger.Log("Facebook login failed.", LoggingLevel.Normal, GetType());
                                        AccessToken.CurrentAccessToken = null;
                                        loginWait.Set();
                                    },
                                };

                                LoginManager.Instance.RegisterCallback(mainActivity.FacebookCallbackManager, loginCallback);
                                LoginManager.Instance.LogInWithReadPermissions(mainActivity, permissionNames);
                            }
                            catch (Exception ex)
                            {
                                accessTokenError = ex.Message;
                                loginWait.Set();
                            }
                        }, true, false);
                        #endregion

                        loginWait.WaitOne();

                        if (accessTokenError != null)
                        {
                            SensusServiceHelper.Get().Logger.Log("Error while initializing Facebook SDK and/or logging in:  " + accessTokenError, LoggingLevel.Normal, GetType());
                        }

                        // if the access token is still not valid after logging in, consider it a fail.
                        if (!HasValidAccessToken)
                        {
                            string message = "Failed to obtain access token.";
                            SensusServiceHelper.Get().Logger.Log(message, LoggingLevel.Normal, GetType());

                            // if the user cancelled the login, don't prompt them to log in again
                            if (loginCancelled)
                            {
                                throw new NotSupportedException(message + " User cancelled login.");
                            }
                            // if the user did not cancel the login, allow the login to be presented again when the health test is run
                            else
                            {
                                throw new Exception(message);
                            }
                        }
                    }
                }
            }
        }
		private void SetupFacebookLogin() {
			callbackManager = CallbackManagerFactory.Create();
			LoginButton facebookLoginBtn = FindViewById<LoginButton>(Resource.Id.facebookLoginBtn);
			facebookLoginBtn.SetReadPermissions("public_profile", "email");
			var loginCallback = new FacebookCallback<LoginResult> {
				HandleSuccess = async loginResult => {
					AlertsService.ShowToast(this, "Facebook zwróci³ token");
					var userIsLogged = await LoginWithFacebook();
					if (userIsLogged) {
						GoToMainActivity();
					}
					else {
						AlertsService.ShowToast(this, "Facebook zwróci³ token, ale coœ posz³o nie tak z logowaniem na serwerze");
					}
				},
				HandleCancel = () => {
					AlertsService.ShowToast(this, "Przerwano logowanie z facebookiem");
				},
				HandleError = loginError => {
					AlertsService.ShowToast(this, "Wyst¹pi³ b³¹ podczas logowanie z facebookiem");
				}
			};
			facebookLoginBtn.RegisterCallback(this.callbackManager, loginCallback);
		}
예제 #17
0
        protected override void Initialize()
        {
            base.Initialize();

            if (HasValidAccessToken)
            {
                SensusServiceHelper.Get().Logger.Log("Already have valid Facebook access token. No need to initialize.", LoggingLevel.Normal, GetType());
                return;
            }

            _loginWait.Reset();
            string accessTokenError = null;

            (SensusServiceHelper.Get() as AndroidSensusServiceHelper).GetMainActivityAsync(true, mainActivity =>
            {
                if (mainActivity == null)
                {
                    accessTokenError = "Failed to get main activity:  activity null";
                    _loginWait.Set();
                }
                else
                {
                    try
                    {
                        if (FacebookSdk.IsInitialized)
                        {
                            SensusServiceHelper.Get().Logger.Log("Facebook SDK is already initialized.", LoggingLevel.Normal, GetType());
                        }
                        else
                        {
                            SensusServiceHelper.Get().Logger.Log("Initializing Facebook SDK.", LoggingLevel.Normal, GetType());
                            FacebookSdk.SdkInitialize(mainActivity);
                            Thread.Sleep(5000);      // give sdk intialization a few seconds to read the access token
                        }

                        #region register callback

                        FacebookCallback <LoginResult> loginCallback = new FacebookCallback <LoginResult>
                        {
                            HandleSuccess = loginResult =>
                            {
                                SensusServiceHelper.Get().Logger.Log("Facebook login succeeded.", SensusService.LoggingLevel.Normal, GetType());
                                AccessToken.CurrentAccessToken = loginResult.AccessToken;
                                _loginWait.Set();
                            },

                            HandleCancel = () =>
                            {
                                SensusServiceHelper.Get().Logger.Log("Facebook login cancelled.", SensusService.LoggingLevel.Normal, GetType());
                                AccessToken.CurrentAccessToken = null;
                                _loginWait.Set();
                            },

                            HandleError = loginResult =>
                            {
                                SensusServiceHelper.Get().Logger.Log("Facebook login failed.", SensusService.LoggingLevel.Normal, GetType());
                                AccessToken.CurrentAccessToken = null;
                                _loginWait.Set();
                            },
                        };

                        LoginManager.Instance.RegisterCallback(mainActivity.FacebookCallbackManager, loginCallback);

                        #endregion

                        if (HasValidAccessToken)
                        {
                            SensusServiceHelper.Get().Logger.Log("Facebook access token read from cache.", LoggingLevel.Normal, GetType());
                            _loginWait.Set();
                        }
                        else
                        {
                            LoginManager.Instance.LogInWithReadPermissions(mainActivity, GetRequiredPermissionNames());
                        }
                    }
                    catch (Exception ex)
                    {
                        accessTokenError = ex.Message;
                        _loginWait.Set();
                    }
                }
            });

            _loginWait.WaitOne();

            if (accessTokenError != null)
            {
                SensusServiceHelper.Get().Logger.Log("Error while initializing Facebook SDK and/or logging in:  " + accessTokenError, LoggingLevel.Normal, GetType());
            }

            if (!HasValidAccessToken)
            {
                string message = "Failed to obtain access token.";
                SensusServiceHelper.Get().Logger.Log(message, LoggingLevel.Normal, GetType());
                throw new Exception(message);
            }
        }