void LoginToFacebook (object sender, EventArgs e)
		{
			var auth = new OAuth2Authenticator (
				clientId: "346691492084618",
				scope: "",
				authorizeUrl: new Uri ("https://m.facebook.com/dialog/oauth/"),
				redirectUrl: new Uri ("http://www.facebook.com/connect/login_success.html"));

			// If authorization succeeds or is canceled, .Completed will be fired.
			auth.Completed += (s, ee) => {
				if (!ee.IsAuthenticated) {
					this.facebookStatus.Text = "Not Authenticated";
					return;
				}

				// Now that we're logged in, make a OAuth2 request to get the user's info.
				var request = new OAuth2Request ("GET", new Uri ("https://graph.facebook.com/me"), null, ee.Account);
				request.GetResponseAsync().ContinueWith (t => {
					if (t.IsFaulted)
						this.facebookStatus.Text = "Error: " + t.Exception.InnerException.Message;
					else if (t.IsCanceled)
						this.facebookStatus.Text = "Canceled";
					else
					{
						var obj = JsonValue.Parse (t.Result.GetResponseText());
						this.facebookStatus.Text = "Logged in as " + obj["name"];
					}
				}, uiScheduler);
			};

			var intent = auth.GetUI (this);
			StartActivityForResult (intent, 42);
		}
		private void FacebookAuthorizationCompleted(object sender, AuthenticatorCompletedEventArgs e)
		{
			dialog.DismissViewController (true, null);
			
			if (!e.IsAuthenticated) {
				facebookStatus.Caption = "Not authorized";
				dialog.ReloadData();
				return;
			}

			String accessToken = String.Empty;
			e.Account.Properties.TryGetValue("access_token", out accessToken);

			var request = new OAuth2Request ("GET", new Uri ("https://graph.facebook.com/me"), null, e.Account);
			request.GetResponseAsync().ContinueWith (t =>
         	{
				if (t.IsFaulted)
					facebookStatus.Caption = "Error: " + t.Exception.InnerException.Message;
				else if (t.IsCanceled)
					facebookStatus.Caption = "Canceled";
				else
				{
					//Parse Json result

					var obj = JsonValue.Parse (t.Result.GetResponseText());
					facebookStatus.Caption = "Logged in as " + obj["name"];
				}
				
				dialog.ReloadData();
			},
			uiScheduler);
		}
Exemple #3
0
        private async Task ValidateGoogleAccessToken(Account account)
        {
            //            $access_token = google_get_user_token($user_id); // get existing token from DB
            //$redirecturl = $Google_Permissions->redirecturl;
            //$client_id = $Google_Permissions->client_id;
            //$client_secret = $Google_Permissions->client_secret;
            //$redirect_uri = $Google_Permissions->redirect_uri;
            //$max_results = $Google_Permissions->max_results;

            //$url = 'https://www.googleapis.com/oauth2/v1/tokeninfo?access_token='.$access_token;
            //$response_contacts = curl_get_responce_contents($url);
            //$response = (json_decode($response_contacts));

            //        if (isset($response->issued_to))
            //        {
            //            return true;
            //        }
            //        else if (isset($response->error))
            //        {
            //            return false;
            //        }

            var req  = new OAuth2Request("GET", new Uri("https://www.googleapis.com/oauth2/v1/tokeninfo"), null, account);
            var resp = await req.GetResponseAsync();

            var obj = JObject.Parse(resp.GetResponseText());
        }
Exemple #4
0
        public FBLoginPageRenderer()
        {
            var activity = this.Context as Activity;

            var auth = new OAuth2Authenticator(
                clientId: "166185944004110",
                scope: "",
                authorizeUrl: new Uri("https://m.facebook.com/dialog/oauth/"),
                redirectUrl: new Uri("http://www.facebook.com/connect/login_success.html"));

            auth.Completed += async(sender, eventArgs) => {
                if (eventArgs.IsAuthenticated)
                {
                    var accessToken = eventArgs.Account.Properties["access_token"].ToString();
                    var expiresIn   = Convert.ToDouble(eventArgs.Account.Properties["expires_in"]);
                    var expiryDate  = DateTime.Now + TimeSpan.FromSeconds(expiresIn);

                    var request  = new OAuth2Request("GET", new Uri("https://graph.facebook.com/me"), null, eventArgs.Account);
                    var response = await request.GetResponseAsync();

                    var obj = JObject.Parse(response.GetResponseText());

                    var id   = obj["id"].ToString().Replace("\"", "");
                    var name = obj["name"].ToString().Replace("\"", "");

                    await App.NavigateToProfile(string.Format("Olá {0}, seja bem-vindo", name));
                }
                else
                {
                    await App.NavigateToProfile("O usuário Cancelou o login");
                }
            };

            activity.StartActivity(auth.GetUI(activity));
        }
        protected override void OnElementChanged(VisualElementChangedEventArgs e)
        {
            base.OnElementChanged(e);

            //var activity = this.Context as Activity;            //var activity = this.Context as Activity;

            if (showLogin && FacebookAuth.User == null)
            {
                showLogin = false;
                var auth = FacebookAuth.FacebookAuthByClientId();

                auth.Completed += async(sender, eventArgs) =>
                {
                    DismissViewController(true, null);
                    if (eventArgs.IsAuthenticated)
                    {
                        var request = new OAuth2Request("GET", new Uri("https://" +
                                                                       "graph.facebook.com/me?fields=name,picture,cover," +
                                                                       "birthday"),
                                                        null, eventArgs.Account);

                        var fbResponse = await request.GetResponseAsync();

                        FacebookAuth.User = JsonConvert.DeserializeObject <UserFacebook>
                                                (fbResponse.GetResponseText());
                        FacebookAuth.SuccessfullLoginAction.Invoke();
                    }
                    else
                    {
                    }
                };
                PresentViewController(auth.GetUI(), true, null);
            }
        }
Exemple #6
0
        async void OnAuthCompleted(object sender, AuthenticatorCompletedEventArgs e)
        {
            var authenticator = sender as OAuth2Authenticator;

            if (authenticator != null)
            {
                authenticator.Completed -= OnAuthCompleted;
                authenticator.Error     -= OnAuthError;
            }

            User user = null;

            if (e.IsAuthenticated)
            {
                //UserInfo = https://www.googleapis,com/oaurh2/v2/userinfo
                var request  = new OAuth2Request("GET", new Uri(Constants.UserInfoUrl), null, e.Account);
                var response = await request.GetResponseAsync();

                if (response != null)
                {
                    string userJson = await response.GetResponseTextAsync();

                    user = JsonConvert.DeserializeObject <User>(userJson);
                }

                if (account != null)
                {
                    store.Delete(account, Constants.AppName);
                }

                await store.SaveAsync(account = e.Account, Constants.AppName);
                await DisplayAlert("Email address", user.Email, "OK");
            }
        }
        public async Task GetFacebookData()
        {
            var request = new OAuth2Request("GET", new Uri(Constants.FacebookProfileInfoURL), null, loggedInAccount);

            await request.GetResponseAsync().ContinueWith(t => {
                if (t.IsFaulted)
                {
                    Console.WriteLine("Error: " + t.Exception.InnerException.Message);
                }
                else
                {
                    var res       = t.Result;
                    var resString = res.GetResponseText();
                    var jo        = Newtonsoft.Json.Linq.JObject.Parse(resString);

                    string socialId   = (string)jo["id"];
                    string name       = (string)jo["first_name"] + " " + (string)jo["last_name"];
                    string email      = (string)jo["email"];
                    string pictureUrl = (string)jo["picture"]["data"]["url"];
                    string socialName = email;

                    App.Instance.User = new User(socialId, name, socialName, email, pictureUrl, "Facebook");
                }
            });
        }
        public override async Task <User> GetUserInfoAsync(Account account)
        {
            User   user        = null;
            string token       = account.Properties["access_token"];
            string refreshToke = account.Properties["refresh_token"];

            int.TryParse(account.Properties["expires_in"], out int expriesIn);

            var request  = new OAuth2Request("GET", UserInfoUri, null, account);
            var response = await request.GetResponseAsync();

            if (response != null && response.StatusCode == HttpStatusCode.OK)
            {
                string userJson = await response.GetResponseTextAsync();

                var kakaoUser = JsonConvert.DeserializeObject <KakaoUser>(userJson);
                user = new User
                {
                    Id                     = kakaoUser.Id,
                    Token                  = token,
                    RefreshToken           = refreshToke,
                    Name                   = kakaoUser.Properties.NickName,
                    Email                  = kakaoUser.Email,
                    ExpiresIn              = DateTime.UtcNow.Add(new TimeSpan(expriesIn)),
                    PictureUrl             = kakaoUser.Properties.ProfileImage,
                    Provider               = SNSProvider.Kakao,
                    LoggedInWithSNSAccount = true,
                };
            }
            return(user);
        }
Exemple #9
0
        public override async Task <SocialUser> GetUserInfoAsync(Account account)
        {
            SocialUser user        = null;
            string     token       = account.Properties["access_token"];
            string     refreshToke = account.Properties["refresh_token"];
            int        expriesIn;

            int.TryParse(account.Properties["expires_in"], out expriesIn);

            Dictionary <string, string> dictionary = new Dictionary <string, string> {
                { "Authorization", token }
            };
            var request  = new OAuth2Request("POST", UserInfoUri, dictionary, account);
            var response = await request.GetResponseAsync();

            if (response != null && response.StatusCode == HttpStatusCode.OK)
            {
                string userJson = await response.GetResponseTextAsync();

                var lineUser = JsonConvert.DeserializeObject <LineUser>(userJson);
                user = new SocialUser
                {
                    SocialId     = lineUser.Id,
                    Token        = token,
                    RefreshToken = refreshToke,
                    Name         = lineUser.Name,
                    ExpiresIn    = DateTime.UtcNow.Add(new TimeSpan(expriesIn)),
                    PictureUrl   = lineUser.ProfileImage,
                    Provider     = SocialProvider.Line,
                    LoggedInWithSocialAccount = true,
                };
            }

            return(user);
        }
Exemple #10
0
        // Obtem dados do usuário
        private async Task <User> GetFacebookUserInfo(Account account)
        {
            var request  = new OAuth2Request("GET", new Uri(Constants.FacebookUserInfoUrl), null, account);
            var response = await request.GetResponseAsync();

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

            var obj = JObject.Parse(response.GetResponseText());

            User user = new User
            {
                Id   = obj["id"].ToString().Replace("\"", ""),
                Name = obj["name"].ToString().Replace("\"", "")
            };

            user.Picture = "https://graph.facebook.com/" + user.Id + "/picture";

            // email não pode ser vazio
            if (obj["email"] != null)
            {
                user.Email = obj["email"].ToString().Replace("\"", "");
            }
            else
            {
                user.Email = user.Id + "@Facebook";
            }

            return(user);
        }
Exemple #11
0
 void GoogleAuthentcation(string id, string scope, string authurl, string redirecturl, string requesturl)
 {
     var auth = new OAuth2Authenticator(id, scope, new Uri(authurl), new Uri(redirecturl));
     //если пользователь захочет отменить аутентификацию
     auth.AllowCancel = true;
     StartActivity(auth.GetUI(this));
     auth.Completed += async (sender, req) =>
     {
         //если аутентификация не удалась
         if (!req.IsAuthenticated)
         {
             //всплывает окошко с сообщением об ошибке
             Toast.MakeText(this, Constants.AUTH_ERROR, ToastLength.Short).Show();
             return;
         }
         //запрос к получению параметров
         var request = new OAuth2Request("GET", new Uri(requesturl), null, req.Account);
         //ответ на запрос
         var response = await request.GetResponseAsync();
         //если ответ получен
         if (response != null)
         {
             var UserData = response.GetResponseText();
         }
         //если ответ НЕ получен
         else
         {
             Toast.MakeText(this, Constants.AUTH_ERROR, ToastLength.Short).Show();
         }
     };
 }
Exemple #12
0
        async void LinkedInAuth_Completed(object sender, AuthenticatorCompletedEventArgs e)
        {
            if (e.IsAuthenticated)
            {
                var request = new OAuth2Request(
                    "GET",
                    new Uri("https://api.linkedin.com/v1/people/~:(id,firstName,lastName,headline,picture-url,summary,educations,three-current-positions,honors-awards,site-standard-profile-request,location,api-standard-profile-request,phone-numbers)?"
                            + "format=json"
                            + "&oauth2_access_token="
                            + e.Account.Properties["access_token"]),
                    null,
                    e.Account);

                var linkedInResponse = await request.GetResponseAsync();

                var json         = linkedInResponse.GetResponseText();
                var linkedInUser = JsonValue.Parse(json);

                var name        = linkedInUser["firstName"] + " " + linkedInUser["lastName"];
                var id          = linkedInUser["id"];
                var description = linkedInUser["headline"];
                var picture     = linkedInUser["pictureUrl"];

                LblName.Text += name;
                //IdLabel.Text += id;
                LblDescription.Text = description;
                ImgVUser.Image      = UIImage.LoadFromData(NSData.FromUrl(new NSUrl(picture)));
            }
            DismissViewController(true, null);
        }
Exemple #13
0
        private async void GoogleAuth_Completed(object sender, AuthenticatorCompletedEventArgs e)
        {
            // We presented the UI, so it's up to us to dimiss it on iOS.
            DismissViewController(true, null);

            if (e.IsAuthenticated)
            {
                var account  = e.Account;
                var request  = new OAuth2Request("GET", new Uri(UserInfoUrl), null, account);
                var response = await request.GetResponseAsync();

                if (response != null)
                {
                    string userJson = response.GetResponseText();
                    var    user     = JsonConvert.DeserializeObject <UserDetailsGoogleDto>(userJson);
                    LblName.Text = user.Name;
                    //IdLabel.Text += id;
                    LblDescription.Text = user.Email;
                    ImgVUser.Image      = UIImage.LoadFromData(NSData.FromUrl(new NSUrl(user.Picture)));
                }
            }
            else
            {
                // The user cancelled
            }
        }
Exemple #14
0
        async void OnAuthCompleted(object sender, AuthenticatorCompletedEventArgs e)
        {
            var authenticator = sender as OAuth2Authenticator;

            if (authenticator != null)
            {
                authenticator.Completed -= OnAuthCompleted;
                authenticator.Error     -= OnAuthError;
            }

            User user = null;

            if (e.IsAuthenticated)
            {
                // If the user is authenticated, request their basic user data from Google
                // UserInfoUrl = https://www.googleapis.com/oauth2/v2/userinfo
                var request  = new OAuth2Request("GET", new Uri(AppConstant.Constants.UserInfoUrl), null, e.Account);
                var response = await request.GetResponseAsync();

                if (response != null)
                {
                    // Deserialize the data and store it in the account store
                    // The users email address will be used to identify data in SimpleDB
                    string userJson = await response.GetResponseTextAsync();

                    user = JsonConvert.DeserializeObject <User>(userJson);
                }

                //await store.SaveAsync(account = e.Account, AppConstant.Constants.AppName);
                await DisplayAlert("Email address", user.Email, "OK");
            }
        }
Exemple #15
0
        public FacebookLogin(Context context) : base(context)
        {
            var activity = this.Context as Activity;


            var auth = new OAuth2Authenticator(
                clientId: "456228191618171",
                scope: "",
                authorizeUrl: new Uri("https://m.facebook.com/dialog/oauth/"),
                redirectUrl: new Uri("https://www.facebook.com/connect/login_success.html"));

            auth.Completed += async(sender, eventArgs) => {
                if (eventArgs.IsAuthenticated)
                {
                    var accessToken = eventArgs.Account.Properties["access_token"].ToString();
                    var expiresIn   = Convert.ToDouble(eventArgs.Account.Properties["expires_in"]);
                    var expiryDate  = DateTime.Now + TimeSpan.FromSeconds(expiresIn);

                    var request  = new OAuth2Request("GET", new Uri("https://graph.facebook.com/me"), null, eventArgs.Account);
                    var response = await request.GetResponseAsync();

                    var obj = JObject.Parse(response.GetResponseText());

                    var id   = obj["id"].ToString().Replace("\"", "");
                    var name = obj["name"].ToString().Replace("\"", "");
                }
                else
                {
                }
            };

            activity.StartActivity(auth.GetUI(activity));
        }
Exemple #16
0
        private async void Authenticator_Completed(object sender, AuthenticatorCompletedEventArgs e)
        {
            if (e.IsAuthenticated)
            {
                AccountStore.Create(Android.App.Application.Context, "briefingPassword").Save(e.Account, "com.companyname.Briefing");
                exceptionString = e.Account.Properties["refresh_token"];
                currentAccount  = e.Account;
                var request  = new OAuth2Request("GET", new Uri("https://www.googleapis.com/oauth2/v2/userinfo"), null, e.Account);
                var response = await request.GetResponseAsync();

                if (response != null)
                {
                    string userJson = response.GetResponseText();
                    //exceptionString = userJson;
                }
                else
                {
                    exceptionString = "";
                }
            }
            else
            {
                exceptionString = "NOT AUTH";
            }
        }
        //private async Task<bool> CheckIfTokenExpiredAsync()
        //{
        //	try
        //	{
        //		var account = AccountStore.Create().FindAccountsForService(Constants.AppName).FirstOrDefault();
        //		var request = new OAuth2Request("GET", new Uri(Constants.tokenInfoUrl), null, account);
        //		var response = await request.GetResponseAsync();

        //		var text = response.GetResponseText();

        //		var json = JObject.Parse(text);
        //		double expiry = (double)json["expires_in"];
        //		if (expiry > 10)
        //			return false;
        //		else
        //			return true;
        //	}
        //	catch
        //	{
        //	}
        //	return true;
        //}

        private async Task GetProfileDetails()
        {
            try
            {
                var account = AccountStore.Create().FindAccountsForService(Constants.AppName).FirstOrDefault();
                if (account == null)
                {
                    return;
                }
                var request  = new OAuth2Request("GET", new Uri(Constants.UserInfoUrl), null, account);
                var response = await request.GetResponseAsync();

                var text = response.GetResponseText();

                var json = JObject.Parse(text);
                lblName.Text  = "Name: " + (string)json["name"];
                lblEmail.Text = "Email: " + (string)json["email"];
                var imageRequest = new OAuth2Request("GET", new Uri((string)json["picture"]), null, account);
                var stream       = await(await imageRequest.GetResponseAsync()).GetResponseStreamAsync();
                imgPRofile.Source = ImageSource.FromStream(() => stream);
            }
            catch
            {
                await DisplayAlert("Error", "An errror occured while fetching user details", "OK");
            }
        }
Exemple #18
0
        async Task GetUserProfile(Account account, string token, DateTimeOffset expireAt)
        {
            var result = new LoginResult
            {
                Token    = token,
                ExpireAt = expireAt
            };

            var request = new OAuth2Request("GET", new Uri("https://apis.live.net/v5.0/me"),
                                            null, account);
            var response = await request.GetResponseAsync();

            if (response != null && response.StatusCode == HttpStatusCode.OK)
            {
                var userJson = response.GetResponseText();
                var jobject  = JObject.Parse(userJson);
                result.LoginState = LoginState.Success;
                result.Email      = jobject["emails"]?["preferred"].ToString();
                result.FirstName  = jobject["first_name"]?.ToString();
                result.LastName   = jobject["last_name"]?.ToString();
                result.ImageUrl   = jobject["picture"]?["data"]?["url"]?.ToString();
                var userId = jobject["id"]?.ToString();
                result.UserId   = userId;
                result.ImageUrl = $"https://apis.live.net/v5.0/{userId}/picture";
            }
            else
            {
                result.LoginState  = LoginState.Failed;
                result.ErrorString = $"Error: Responce={response}, StatusCode = {response?.StatusCode}";
            }

            SetResult(result);
        }
Exemple #19
0
        public async Task <Customer> GetCustomerInfo(Account account)
        {
            UserDialogs.Instance.ShowLoading("Getting customer info");

            // If the user is authenticated, request their basic user data from Google
            var request = new OAuth2Request("GET", new Uri(Constants.UserInfoUrl), null, account);

            try{
                var response = await request.GetResponseAsync();

                if (response != null)
                {
                    // Deserialize the data and store it in the account store
                    string userJson = response.GetResponseText();

                    CustomerGoogleDto googleCustomer = JsonConvert.DeserializeObject <CustomerGoogleDto>(userJson, jsonSetting);
                    return(new Customer {
                        FamilyName = googleCustomer.FamilyName,
                        GivenName = googleCustomer.GivenName,
                        Email = googleCustomer.Email,
                    });
                }
                else
                {
                    UserDialogs.Instance.ShowError("Failed to get customer info");
                }
            }catch (Exception e) {
                UserDialogs.Instance.ShowError("Failed to get customer info");
                Debug.WriteLine(e);
            }


            return(null);
        }
        private async Task <string> GetMessageSenderMessageType(int messageId, Account acc)
        {
            try
            {
                this.StartRequest();

                var request =
                    new OAuth2Request("GET",
                                      new Uri("https://api.vk.com/method/messages.getById"),
                                      null, acc);

                request.Parameters.Add("message_ids", messageId.ToString());
                request.Parameters.Add("preview_length", "0");
                request.Parameters.Add("v", "5.37");

                var res1 = await request.GetResponseAsync();

                var responseText = res1.GetResponseText();

                var response =
                    JsonConvert.DeserializeObject <XamarinSocialApp.Droid.Data.VkData.VkMessageByIdResponse>(responseText);

                return(response.Response.Messages.First().Out);
            }
            catch (Exception ex)
            {
            }
            finally
            {
                this.StopRequest();
            }

            return(String.Empty);
        }
        async void OnAuthenticationCompleted(object sender, AuthenticatorCompletedEventArgs e)
        {
            if (e.IsAuthenticated)
            {
                // If the user is authenticated, request their basic user data from Google
                // UserInfoUrl = https://www.googleapis.com/oauth2/v2/userinfo
                var request  = new OAuth2Request("GET", new Uri(EventbriteConstants.UserInfoUrl), null, e.Account);
                var response = await request.GetResponseAsync();

                if (response != null)
                {
                    // Deserialize the data and store it in the account store
                    // The users email address will be used to identify data in SimpleDB
                    string userJson = response.GetResponseText();
                    App.User           = JsonConvert.DeserializeObject <User>(userJson);
                    e.Account.Username = App.User.Email;
                    AccountStore.Create().Save(e.Account, App.AppName);
                }
            }
            // If the user is logged in navigate to the TodoList page.
            // Otherwise allow another login attempt.

            //App.SuccessfulLoginAction.Invoke();
            //MessagingCenter.Send((AuthenticationPage)Element, "UserAuthenticated", string.Empty);
            ((AuthenticationPageModel)((AuthenticationPage)Element).GetModel()).LoggedCommand.Execute(string.Empty);
        }
        private static async Task <IEnumerable <DataIUser> > GetUserVkFriends(DataIUser user)
        {
            IList <DataIUser> friends = new List <DataIUser>();

            try
            {
                Account acc     = Account.Deserialize(user.SerializeInfo.ToString());
                var     request = new OAuth2Request("GET", new Uri("https://api.vk.com/method/friends.get"), null, acc);

                request.Parameters.Add("fields", "nickname,photo_200");
                request.Parameters.Add("order", "hints");

                var res = await request.GetResponseAsync();

                var responseText = res.GetResponseText();

                var listFriendsIds = JsonConvert.DeserializeObject <XamarinSocialApp.Droid.Data.VkData.VkUsers>(responseText);

                foreach (var friend in listFriendsIds.response)
                {
                    friends.Add(new DataUser()
                    {
                        UserPhoto     = friend.photo_200,
                        FirstName     = friend.first_name,
                        LastName      = friend.last_name,
                        SerializeInfo = user.SerializeInfo,
                        Uid           = friend.uid
                    });
                }
            }
            catch (Exception)
            {
            }
            return(friends);
        }
Exemple #23
0
        //API request to get Profile Information from Facebook
        public async Task <bool> RequestLoginData(Account account)
        {
            bool bAuth   = false;
            var  request = new OAuth2Request("GET", new Uri("https://graph.facebook.com/me?fields=id,name,email"),
                                             null, account);
            var response = await request.GetResponseAsync();

            var obj = JObject.Parse(response.GetResponseText());

            string token = account.Properties["access_token"].ToString();

            var      expiresIn = Convert.ToDouble(account.Properties["expires_in"]);
            DateTime dtExpiry  = DateTime.Now + TimeSpan.FromSeconds(expiresIn);

            string idAut = obj["id"].ToString().Replace("\"", "");
            string nome  = obj["name"].ToString().Replace("\"", "");

            string email = string.Empty;

            if (obj["email"] != null)
            {
                email = obj["email"].ToString().Replace("\"", "");
            }

            //envia mensagem para tela de login, informando se usuário autenticou-se
            MessagingCenter.Send <Application, bool>(App.Current, "Authentication", bAuth);

            return(true);
        }
Exemple #24
0
        public FacebookRenderDroid()
        {
            var activity = this.Context as Activity;

            var auth = new OAuth2Authenticator(
                clientId: "1656022791365456",
                scope: "public_profile,email,user_location,user_religion_politics",
                authorizeUrl: new Uri("https://m.facebook.com/dialog/oauth/"),
                redirectUrl: new Uri("http://www.facebook.com/connect/login_success.html"));

            App.HideLoginView();

            auth.Completed += async(sender, ee) =>
            {
                if (ee.IsAuthenticated)
                {
                    var request = new OAuth2Request("GET", new Uri("https://graph.facebook.com/me?fields=political,location,hometown,email,birthday,first_name,last_name,gender,picture"), null, ee.Account);

                    var response = await request.GetResponseAsync();

                    App.LoginFacebook(response.GetResponseText(), ee.Account.Properties["access_token"], DateTime.Now + TimeSpan.FromSeconds(Convert.ToDouble(ee.Account.Properties["expires_in"])));
                    //App.NavigateToProfile();
                }
                else
                {
                    App.NavigateToProfile();
                }
            };

            Context.StartActivity(auth.GetUI(Context));
        }
        private async void Auth_Completed(object sender, AuthenticatorCompletedEventArgs e)
        {
            if (e.IsAuthenticated)
            {
                var request = new OAuth2Request(
                    "GET",
                    new Uri("https://graph.facebook.com/me?fields=name"),
                    null,
                    e.Account);

                var fbResponse = await request.GetResponseAsync();

                var fbUser = JsonValue.Parse(fbResponse.GetResponseText());

                var name = fbUser["name"];
                var id   = fbUser["id"];

                if (!(IsExistingUser(id)))
                {
                    SaveUserLocally(id, name);
                }
                AddUserToDB(id, name);
            }

            DismissViewController(true, null);
        }
        public OAuth2Request ToOAuth2Request(ISalesforceUser user)
        {
            if (!(Resource is SObject))
            {
                throw new InvalidOperationException("Only SObjects can have changes. Searches and Queries not elibible.");
            }

            if (Since > Until)
            {
                throw new InvalidOperationException("Since must preceed Until.");
            }

//            var path = user.Properties ["instance_url"] + SalesforceClient.RestApiPath;
//            var baseUri = new Uri (path);
//            var queryString = String.Format("?start={0:O}&end={1:O}", Since.ToUniversalTime(), Until.ToUniversalTime());
//            var changesPath = Path.Combine(Resource.AbsoluteUri.AbsolutePath, ChangeType.ToString(), queryString);
//            var changesUri = new Uri(changesPath);
//            var uri = new Uri (baseUri, changesUri);
            var path    = user.Properties ["instance_url"] + SalesforceClient.RestApiPath;
            var baseUri = new Uri(path);
            var uri     = new UriBuilder(new Uri(baseUri, Resource.AbsoluteUri));
            // Custom ISO format:
            var since       = Since.ToUniversalTime();
            var sinceString = String.Format("{0}T{1}Z", since.ToString("yyyy-MM-dd"), since.ToString("HH:mm:ss"));
            var until       = Until.ToUniversalTime();
            var untilString = String.Format("{0}T{1}Z", until.ToString("yyyy-MM-dd"), until.ToString("HH:mm:ss"));

            uri.Query = String.Format("start={0}&end={1}", sinceString, untilString);
            var oauthRequest = new OAuth2Request(Method, uri.Uri, Resource.Options.Where(kvp => kvp.Value.JsonType == JsonType.String).ToDictionary(k => k.Key, v => (string)v.Value), user);

            return(oauthRequest);
        }
        public IOAuth2Request CreateRequest(string method, string accessTokenParameterName, Uri url, IDictionary <string, string> parameters, IAccount account)
        {
            var request = new OAuth2Request(method, url, parameters, new Account(account.Username, account.Properties, account.Cookies));

            request.AccessTokenParameterName = accessTokenParameterName;
            return(new PlatformOAuth2Request(request));
        }
Exemple #28
0
        async void OnGoogleAuthCompleted(object sender, AuthenticatorCompletedEventArgs e)
        {
            var authenticator = sender as OAuth2Authenticator;

            if (authenticator != null)
            {
                authenticator.Completed -= OnGoogleAuthCompleted;
                authenticator.Error     -= OnGoogleAuthError;
            }

            if (e.IsAuthenticated)
            {
                //
                var request  = new OAuth2Request("GET", new Uri(Constants.GoogleAPI.UserInfoUrl), null, e.Account);
                var response = await request.GetResponseAsync();

                if (response != null)
                {
                    string userJson = await response.GetResponseTextAsync();

                    GoogleUser user = JsonConvert.DeserializeObject <GoogleUser>(userJson);
                    viewModel.SocialLogin(user);
                }
                else
                {
                    await Shell.Current.DisplayAlert("", "Không thể kết nối đến Google !", "Đóng");
                }
            }
            else
            {
                //await accountPage.DisplayAlert("", "Không thể kết nối đến Google .", "Đóng");
            }
            await Task.Delay(2000);
        }
Exemple #29
0
        async void GetProfileButtonClicked(object sender, EventArgs e)
        {
            try
            {
                var request  = new OAuth2Request("GET", ServerInfo.ApiEndpoint, null, account);
                var response = await request.GetResponseAsync();

                var text = response.GetResponseText();

                var json = JObject.Parse(text);

                var name     = (string)json["Name"];
                var email    = (string)json["Email"];
                var imageUrl = (string)json["ImageUrl"];

                nameText.Text  = name;
                emailText.Text = email;

                var imageRequest = new OAuth2Request("GET", new Uri(imageUrl), null, account);
                var stream       = await(await imageRequest.GetResponseAsync()).GetResponseStreamAsync();

                profileImage.Source = ImageSource.FromStream(() => stream);

                statusText.Text = "Get data succeeded";
            }
            catch (Exception x)
            {
                getProfileButton.IsEnabled = false;
                statusText.Text            = "Get data failure: " + x.Message + "\r\nHas the access token expired?";
            }
        }
Exemple #30
0
        async void OnAuthCompleted(object sender, AuthenticatorCompletedEventArgs e)
        {
            var            authenticator = sender as OAuth2Authenticator;
            GoogleUserInfo user          = null;

            if (authenticator != null)
            {
                authenticator.Completed -= OnAuthCompleted;
                authenticator.Error     -= OnAuthError;
            }
            if (e.IsAuthenticated)
            {
                // If the user is authenticated, request their basic user data from Google
                var request  = new OAuth2Request("GET", new Uri(Constants.UserInfoUrl), null, e.Account);
                var response = await request.GetResponseAsync();

                if (response != null)
                {
                    // Deserialize the data and store it in the account store
                    // The users email address will be used to identify data in SimpleDB
                    string userJson = await response.GetResponseTextAsync();

                    //await DisplayAlert("JSON", userJson, "OK"); debug
                    user = JsonConvert.DeserializeObject <GoogleUserInfo>(userJson);
                }

                if (account != null)
                {
                    store.Delete(account, Constants.AppName);
                }

                CreateAccountGoogleAuth(user);
            }
        }
        public async Task CompleteAccountInformation(Account account)
        {
            // Calculate the absolute expiration date
            DateTime expiresOn = DateTime.Now.AddSeconds(int.Parse(account.Properties[FacebookAccountProperties.ExpiresIn]));

            account.Properties[FacebookAccountProperties.ExpiresOn] = expiresOn.ToFileTimeUtc().ToString();
            // Pull the remaining information from the server
            var request = new OAuth2Request(
                RequestGet,
                WebUriBuilder(GraphApiUrl, ApiVersion, GraphApiNodeMe),
                new Dictionary <string, string> {
                { RequestParameterFields, "id,name,email" }
            },
                account
                );
            var response = await request.GetResponseAsync();

            if (response != null)
            {
                var accountInformation = JsonConvert.DeserializeObject <FacebookAccountInformation>(response.GetResponseText());
                account.Properties[FacebookAccountProperties.Id]    = accountInformation.id;
                account.Properties[FacebookAccountProperties.Name]  = accountInformation.name;
                account.Properties[FacebookAccountProperties.EMail] = accountInformation.email;
            }
            else
            {
                throw new AuthException("Could not pull the remaining information from the Facebook server");
            }
        }
Exemple #32
0
        void Authentcation(string id, string scope, string authurl, string redirecturl, string requesturl)
        {
            var auth = new OAuth2Authenticator(id, scope, new Uri(authurl), new Uri(redirecturl));

            auth.AllowCancel = true;
            StartActivity(auth.GetUI(this));

            auth.Completed += async(sender, e) =>
            {
                if (!e.IsAuthenticated)
                {
                    Toast.MakeText(this, Constants.FAIL_AUTH, ToastLength.Short).Show();
                    return;
                }

                progressDialog = ProgressDialog.Show(this, Constants.WAIT, Constants.CHECKING_INFO, true);
                var request  = new OAuth2Request(Constants.REST_TYPE, new Uri(requesturl), null, e.Account);
                var response = await request.GetResponseAsync();

                if (response != null)
                {
                    progressDialog.Hide();
                    var userJson = response.GetResponseText();
                    StoringDataIntoCache(userJson);
                }
            };
        }
Exemple #33
0
		void LoginToFacebook (bool allowCancel)
		{
			var auth = new OAuth2Authenticator (
				clientId: "App ID from https://developers.facebook.com/apps",
				scope: "",
				authorizeUrl: new Uri ("https://m.facebook.com/dialog/oauth/"),
				redirectUrl: new Uri ("http://www.facebook.com/connect/login_success.html"));

			auth.AllowCancel = allowCancel;

			// If authorization succeeds or is canceled, .Completed will be fired.
			auth.Completed += (s, ee) => {
				if (!ee.IsAuthenticated) {
					var builder = new AlertDialog.Builder (this);
					builder.SetMessage ("Not Authenticated");
					builder.SetPositiveButton ("Ok", (o, e) => { });
					builder.Create().Show();
					return;
				}

				// Now that we're logged in, make a OAuth2 request to get the user's info.
				var request = new OAuth2Request ("GET", new Uri ("https://graph.facebook.com/me"), null, ee.Account);
				request.GetResponseAsync().ContinueWith (t => {
					var builder = new AlertDialog.Builder (this);
					if (t.IsFaulted) {
						builder.SetTitle ("Error");
						builder.SetMessage (t.Exception.Flatten().InnerException.ToString());
					} else if (t.IsCanceled)
						builder.SetTitle ("Task Canceled");
					else {
						var obj = JsonValue.Parse (t.Result.GetResponseText());

						builder.SetTitle ("Logged in");
						builder.SetMessage ("Name: " + obj["name"]);
					}

					builder.SetPositiveButton ("Ok", (o, e) => { });
					builder.Create().Show();
				}, UIScheduler);
			};

			var intent = auth.GetUI (this);
			StartActivity (intent);
		}
Exemple #34
0
		void LoginToFacebook (bool allowCancel)
		{
			var auth = new OAuth2Authenticator (
				clientId: "App ID from https://developers.facebook.com/apps",
				scope: "",
				authorizeUrl: new Uri ("https://m.facebook.com/dialog/oauth/"),
				redirectUrl: new Uri ("http://www.facebook.com/connect/login_success.html"));

			auth.AllowCancel = allowCancel;

			// If authorization succeeds or is canceled, .Completed will be fired.
			auth.Completed += (s, e) =>
			{
				// We presented the UI, so it's up to us to dismiss it.
				dialog.DismissViewController (true, null);

				if (!e.IsAuthenticated) {
					facebookStatus.Caption = "Not authorized";
					dialog.ReloadData();
					return;
				}

				// Now that we're logged in, make a OAuth2 request to get the user's info.
				var request = new OAuth2Request ("GET", new Uri ("https://graph.facebook.com/me"), null, e.Account);
				request.GetResponseAsync().ContinueWith (t => {
					if (t.IsFaulted)
						facebookStatus.Caption = "Error: " + t.Exception.InnerException.Message;
					else if (t.IsCanceled)
						facebookStatus.Caption = "Canceled";
					else
					{
						var obj = JsonValue.Parse (t.Result.GetResponseText());
						facebookStatus.Caption = "Logged in as " + obj["name"];
					}

					dialog.ReloadData();
				}, uiScheduler);
			};

			UIViewController vc = auth.GetUI ();
			dialog.PresentViewController (vc, true, null);
		}
		void LoginToVk (bool allowCancel)
		{
			var auth = new OAuth2Authenticator (
				clientId: "5042701",
				scope: "messages",
				authorizeUrl: new Uri("https://oauth.vk.com/authorize"),
				redirectUrl: new Uri("https://oauth.vk.com/blank.html"));

			auth.AllowCancel = allowCancel;

			// If authorization succeeds or is canceled, .Completed will be fired.
			auth.Completed += (s, ee) => {
				if (!ee.IsAuthenticated) {
					var builder = new AlertDialog.Builder (this);
					builder.SetMessage ("Not Authenticated");
					builder.SetPositiveButton ("Ok", (o, e) => { });
					builder.Create().Show();
					return;
				}

				// Now that we're logged in, make a OAuth2 request to get the user's info.
				var request = new OAuth2Request("GET", new Uri("https://api.vk.com/method/users.get"), null, ee.Account);
				request.GetResponseAsync().ContinueWith (t => 
				{
					if (t.IsCompleted)
					{
						Token = ee.Account.Properties["access_token"].ToString();
						Account = ee.Account;

						var response = t.Result.GetResponseText();

						var users = JsonConvert.DeserializeObject<VkUsers>(response);

						string uid = users.response[0].uid;
						string firstName = users.response[0].first_name;
						string lastName = users.response[0].last_name;

						new AlertDialog.Builder(this).SetPositiveButton("Ok", (o, e) => { })
																				 .SetMessage("You logged in succesfully!")
																				 .SetTitle("TalkManager")
																				 .Show();
					}
					else
					{
						var builder = new AlertDialog.Builder(this);
						builder.SetMessage("Not Authenticated");
						builder.SetPositiveButton("Ok", (o, e) => { });
						builder.Create().Show();
						return;
					}
				}, UIScheduler);
			};


			var intent = auth.GetUI (this);
			StartActivity (intent);
		}
Exemple #36
0
        private void FacebookPost(Account facebookAccount, string message, string clientID, string link)
        {
            var request = new OAuth2Request("GET", new Uri("https://graph.facebook.com/me?"), null, facebookAccount);
            request.GetResponseAsync().ContinueWith(t =>
                {
                    InvokeOnMainThread(() =>
                    {
                        if (t.IsFaulted)
                        {
                            FacebookLoginPost(clientID, message, link);
                        }
                        else
                        {
                            // 1. Create the service
                            var facebook = new FacebookService
                            {
                                ClientId = clientID,
                            };

                            facebook.SaveAccount(facebookAccount);

                            // 2. Create an item to share
                            var item = new Item();
                            item.Text = message;
                            if (!String.IsNullOrEmpty(link) )
                            {
                                item.Links.Add(new Uri(link));
                            }

                            // 3. Present the UI on iOS
                            UIViewController cur_ViewController=(auth_ViewController==null?c_ViewController:auth_ViewController);
                            var shareController = facebook.GetShareUI(item, result =>
                            {
                                            new UIAlertView ("Result",result.ToString(), null, "Ok").Show ();
                                            c_ViewController.DismissViewController(true,null);
                            });
                                    cur_ViewController.PresentViewController(shareController, true, null);
                        }
                    });
                });
        }
        private void FacebookPost(Account facebookAccount, string message, string clientID, string link)
        {
            var request = new OAuth2Request("GET", new Uri("https://graph.facebook.com/me"), null, facebookAccount);
            request.GetResponseAsync().ContinueWith(t =>
                {
                    if (t.IsFaulted)
                    {
                        Console.WriteLine("Error: " + t.Exception.InnerException.Message);
                        FacebookLoginPost(clientID, message, link);
                    }
                    else
                    {
                        // 1. Create the service
                        var facebook = new FacebookService
                        {
                            ClientId = clientID,
                        };

                        facebook.SaveAccount(facebookAccount);

                        // 2. Create an item to share
                        var item = new Item();
                        item.Text = message;
                        if (link != null)
                        {
                            item.Links.Add(new Uri(link));
                        }

                        // 3. Present the UI on iOS
                        InvokeOnMainThread(() =>
                            {
                                var shareController = facebook.GetShareUI(item, result =>
                                    {
                                        UIApplication.SharedApplication.KeyWindow.RootViewController.DismissViewController(true, null);
                                    });
                                UIApplication.SharedApplication.KeyWindow.RootViewController.PresentViewController(shareController, true, null);
                            });
                    }
                });
        }
        private void FacebookPost(Account facebookAccount, string message, string clientID, string link)
        {
            var request = new OAuth2Request("GET", new Uri("https://graph.facebook.com/me"), null, facebookAccount);
            request.GetResponseAsync().ContinueWith(t =>
                {
                    if (t.IsFaulted)
                    {
                        Console.WriteLine("Error: " + t.Exception.InnerException.Message);
                        FacebookLoginPost(clientID, message, link);
                    }
                    else
                    {
                        // 1. Create the service
                        var facebook = new FacebookService { ClientId = clientID };

                        facebook.SaveAccount(Forms.Context, facebookAccount);

                        // 2. Create an item to share
                        var item = new Item();
                        item.Text = message;
                        if (link != null)
                        {
                            item.Links.Add(new Uri(link));
                        }
                        Device.BeginInvokeOnMainThread(() =>
                            {
                                // 3. Present the UI on iOS
                                var shareIntent = facebook.GetShareUI((Activity)Forms.Context, item, result =>
                                    {
                                        // result lets you know if the user shared the item or canceled
                                    });
                                Forms.Context.StartActivity(shareIntent);
                            });
                    }
                });
        }
		async Task<OAuth2Request> GetDialogs()
		{
			var request = new OAuth2Request("GET", new Uri("https://api.vk.com/method/messages.getDialogs"), null, Account);
			request.Parameters.Add("count", "1");
			request.Parameters.Add("access_token", Token);
			request.Parameters.Add("v", "5.37");

			var res = await request.GetResponseAsync();
			var responseText =  res.GetResponseText();

			var msg = JsonConvert.DeserializeObject<VkMessagesResponse>(responseText);
			string message = msg.Response.Messages.First().Message.Body;

			return null;
		}
		private void VkontakteAuthorizationCompleted(object sender, AuthenticatorCompletedEventArgs e)
		{
			dialog.DismissViewController (true, null);
			
			if (!e.IsAuthenticated)
			{
				vkontakteStatus.Caption = "Not authorized";
				dialog.ReloadData();
				return;
			}
			
			String accessToken = String.Empty;
			e.Account.Properties.TryGetValue("access_token", out accessToken);
			
			String userId = String.Empty;
			e.Account.Properties.TryGetValue("user_id", out userId);
			
			String uri = String.Format("https://api.vk.com/method/users.get?uid={0}&access_token={1}", userId, accessToken);
			
			var request = new OAuth2Request ("GET", new Uri (uri), null, e.Account);
			request.GetResponseAsync().ContinueWith (t => {
				if (t.IsFaulted)
					vkontakteStatus.Caption = "Error: " + t.Exception.InnerException.Message;
				else if (t.IsCanceled)
					vkontakteStatus.Caption = "Canceled";
				else
				{
					//Parse Json result

					var obj = JsonObject.Parse (t.Result.GetResponseText());
					var resp = obj["response"] as JsonArray;
					vkontakteStatus.Caption = "Logged in as " + resp.FirstOrDefault()["first_name"];
				}
				
				dialog.ReloadData();
			}, uiScheduler);
		
		}