Exemplo n.º 1
0
        void LoginManagerLoginHandler(LoginManagerLoginResult result, NSError error)
        {
            if (result.IsCancelled)
            {
                completionSource.TrySetResult(new FacebookLoginResult {
                    LoginState = FacebookLoginState.Canceled
                });
            }
            else if (error != null)
            {
                completionSource.TrySetResult(new FacebookLoginResult {
                    LoginState = FacebookLoginState.Failed, ErrorString = error.LocalizedDescription
                });
            }
            else
            {
                loginResult = new FacebookLoginResult
                {
                    Token    = result.Token.TokenString,
                    UserId   = result.Token.UserID,
                    ExpireAt = result.Token.ExpirationDate.ToDateTime()
                };

                var request = new GraphRequest(@"me", new NSDictionary(@"fields", @"email"));
                request.Start(GetEmailRequestHandler);
            }
        }
Exemplo n.º 2
0
        public void OnCompleted(GraphResponse response)
        {
            if (response?.JSONObject == null)
            {
                completionSource?.TrySetResult(new FacebookLoginResult {
                    LoginState = FacebookLoginState.Canceled
                });
            }
            else
            {
                loginResult = new FacebookLoginResult
                {
                    FirstName  = Profile.CurrentProfile.FirstName,
                    LastName   = Profile.CurrentProfile.LastName,
                    Email      = response.JSONObject.Has("email") ? response.JSONObject.GetString("email") : string.Empty,
                    ImageUrl   = response.JSONObject.GetJSONObject("picture")?.GetJSONObject("data")?.GetString("url"),
                    Token      = AccessToken.CurrentAccessToken.Token,
                    UserId     = AccessToken.CurrentAccessToken.UserId,
                    ExpireAt   = FromJavaDateTime(AccessToken.CurrentAccessToken?.Expires?.Time),
                    LoginState = FacebookLoginState.Success
                };

                completionSource?.TrySetResult(loginResult);
            }
        }
Exemplo n.º 3
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);
        }
Exemplo n.º 4
0
        /// <summary>
        /// Updates the model.
        /// </summary>
        /// <param name="login">The login.</param>
        /// <param name="iscancelled">if set to <c>true</c> [iscancelled].</param>
        /// <param name="iserror">if set to <c>true</c> [iserror].</param>
        private void UpdateFacebookResult(FacebookLoginResult login, bool iscancelled = false, bool iserror = false)
        {
            var token = AccessToken.CurrentAccessToken != null;

            if (token)
            {
                login.Token          = AccessToken.CurrentAccessToken?.Token;
                login.ExpirationDate = AccessToken.CurrentAccessToken != null
                                        ? JavaToCsharpDateTime(AccessToken.CurrentAccessToken?.Expires.Time)
                                        : null;

                login.UserId      = AccessToken.CurrentAccessToken?.UserId;
                login.IsCancelled = iscancelled;
            }
            else
            {
                login.IsCancelled = iscancelled;
            }
        }
Exemplo n.º 5
0
        public Task <FacebookLoginResult> Login()
        {
            var result = new TaskCompletionSource <FacebookLoginResult>();
            var auth   = new OAuth1Authenticator(
                "wDDuNu2auh21NLhWQu2zOdhSc",
                "QYeJH178DVJB6hSovnbWoTueHKo87WGNAPNLMmCkfcNctlaHEw",
                new Uri("https://api.twitter.com/oauth/request_token"),
                new Uri("https://api.twitter.com/oauth/authorize"),
                new Uri("https://api.twitter.com/oauth/access_token"),
                new Uri("http://mobile.twitter.com/home")
                )
            {
                AllowCancel = true
            };

            auth.Completed += async(s, eventArgs) =>
            {
                UIApplication.SharedApplication.KeyWindow.RootViewController.DismissViewController(true, null);

                var twitterLoginResult = new FacebookLoginResult();
                if (eventArgs.IsAuthenticated)
                {
                    var loggedInAccount = eventArgs.Account;
                    twitterLoginResult = new FacebookLoginResult
                    {
                        Name        = loggedInAccount.Properties["screen_name"],
                        AccessToken = loggedInAccount.Properties["oauth_token"],
                        UserId      = loggedInAccount.Properties["user_id"]
                    };

                    twitterLoginResult.Email = await GetTwitterUserMail(loggedInAccount);
                }

                twitterLoginResult.IsLoggedIn = eventArgs.IsAuthenticated;
                result.SetResult(twitterLoginResult);
            };

            UIApplication.SharedApplication.KeyWindow.RootViewController
            .PresentViewController(auth.GetUI(), true, null);

            return(result.Task);
        }
Exemplo n.º 6
0
        public Task <FacebookLoginResult> Login()
        {
            var result = new TaskCompletionSource <FacebookLoginResult>();
            var auth   = new OAuth1Authenticator(
                "wDDuNu2auh21NLhWQu2zOdhSc",
                "QYeJH178DVJB6hSovnbWoTueHKo87WGNAPNLMmCkfcNctlaHEw",
                new Uri("https://api.twitter.com/oauth/request_token"),
                new Uri("https://api.twitter.com/oauth/authorize"),
                new Uri("https://api.twitter.com/oauth/access_token"),
                new Uri("http://mobile.twitter.com")
                )
            {
                AllowCancel = true
            };

            var context = Forms.Context;
            var intent  = auth.GetUI(context);

            context.StartActivity(intent);

            auth.Completed += async(s, eventArgs) =>
            {
                var twitterLoginResult = new FacebookLoginResult();
                if (eventArgs.IsAuthenticated)
                {
                    var loggedInAccount = eventArgs.Account;
                    twitterLoginResult = new FacebookLoginResult
                    {
                        Name        = loggedInAccount.Properties["screen_name"],
                        AccessToken = loggedInAccount.Properties["oauth_token"],
                        UserId      = loggedInAccount.Properties["user_id"]
                    };

                    twitterLoginResult.Email = await GetTwitterUserMail(loggedInAccount);
                }

                twitterLoginResult.IsLoggedIn = eventArgs.IsAuthenticated;
                result.SetResult(twitterLoginResult);
            };

            return(result.Task);
        }