public SocialAuthController(AccountOAuth.OAuthTypes providerType, Context c)
 {
     this.ProviderType = providerType;
     int type = 0;
     switch (providerType)
     {
         case AccountOAuth.OAuthTypes.FaceBook:
             type = 1;
             break;
         case AccountOAuth.OAuthTypes.Twitter:
             type = 2;
             break;
         case AccountOAuth.OAuthTypes.LinkedIn:
             type = 3;
             break;
         case AccountOAuth.OAuthTypes.Google:
             type = 4;
             break;
         case AccountOAuth.OAuthTypes.YouTube:
             type = 5;
             break;
     }
     Intent i = new Intent(c, typeof(WebViewer));
     i.PutExtra("type", type);
     c.StartActivity(i);
 }
        private void SaveFoundContacts()
        {
            RunOnUiThread(() =>
            {
                Toast.MakeText(context, Resource.String.chooseFriendsAddingSelectedContacts, ToastLength.Short);
            });
            AccountOAuth accountOAuth = new AccountOAuth();

            try
            {
                this.Provider.GetUserInfoObject(accountOAuth);
            } catch (Exception ex)
            {

            #if(DEBUG)
                System.Diagnostics.Debug.WriteLine("Error retrieving user info object.");
            #endif
                string m = string.Format("{0} {1}",
                        Application.Context.GetString(Resource.String.errorSavingContacts),
                        ex.Message);
                RunOnUiThread(() => GeneralUtils.Alert(context, Application.Context.GetString(Resource.String.commonError), m));
                return;
            }

            LOLConnectClient service = new LOLConnectClient(LOLConstants.DefaultHttpBinding, LOLConstants.LOLConnectEndpoint);
            service.AccountOAuthCreateCompleted += this.Service_AccountOAuthCreateCompleted;
            service.AccountOAuthCreateAsync(AndroidData.CurrentUser.AccountID,
                                            accountOAuth.OAuthType,
                                            accountOAuth.OAuthID,
                                            accountOAuth.OAuthToken,
                                            new Guid(AndroidData.ServiceAuthToken));
        }
 public dealWithSACWebView(Activity f, AccountOAuth.OAuthTypes ProviderType, ISocialProviderManager Provider, ImageButton btnBack)
 {
     this.parent = f;
     this.Provider = Provider;
     this.ProviderType = ProviderType;
     string authUrl = this.Provider.BrowserAuthUrl;
     btnBack.Click += delegate
     {
         parent.Finish();
     };
     switch (ProviderType)
     {
         case AccountOAuth.OAuthTypes.Google:
             AccessTokenReceived += (occurred, expires, accessToken, accessTokenSecret, refreshToken) =>
             {
                 AndroidData.GooglePlusAccessToken = accessToken;
                 AndroidData.GooglePlusRefreshToken = refreshToken;
                 AndroidData.GoogleAccessTokenExpiration = expires;
                 ShowAfterLoginScreen();
             };
             break;
         case AccountOAuth.OAuthTypes.FaceBook:
             LFacebookManager lFace = new LFacebookManager(LOLConstants.FacebookAPIKey, LOLConstants.FacebookAppSecret);
             AccessTokenReceived += (occurred, expires, accessToken, accessTokenSecret, refreshToken) =>
             {
                 try
                 {
                     if (lFace.RefreshAccessToken())
                     {
                         AndroidData.FacebookAccessToken = lFace.AccessToken;
                         AndroidData.FacebookAccessTokenExpiration =
                             lFace.AccessTokenExpirationTime ?? DateTime.Now;
                     }//end if
                 } catch
                 {
                     AndroidData.FacebookAccessToken = accessToken;
                     AndroidData.FacebookAccessTokenExpiration = expires;
                 }
                 ShowAfterLoginScreen();
             };
             break;
         case AccountOAuth.OAuthTypes.LinkedIn:
             AccessTokenReceived += (occurred, expires, accessToken, accessTokenSecret, refreshToken) =>
             {
                 AndroidData.LinkedInAccessToken = accessToken;
                 AndroidData.LinkedInAccessTokenSecret = accessTokenSecret;
                 ShowAfterLoginScreen();
             };
             break;
     }
 }
Exemplo n.º 4
0
        public User GetUserInfoObject(AccountOAuth accountOAuth)
        {
            try
            {

                User toReturn = new User();
                string userInfoResponse = this.GetUserInfo();

                JsonValue userInfoJson = JsonValue.Parse(userInfoResponse);

                accountOAuth.OAuthID = (string)userInfoJson["id_str"];
                accountOAuth.OAuthToken = this.AccessToken;
                accountOAuth.OAuthType = this.ProviderType;

                toReturn.FirstName = userInfoJson.ContainsKey("name") ? (string)userInfoJson["name"] : string.Empty;
                toReturn.LastName = string.Empty; // No firstname or lastname on Twitter, just "name"
                toReturn.DateOfBirth = new DateTime(1900, 1, 1); // No birthday on Twitter
                toReturn.EmailAddress = string.Empty; // No email address on Twitter
                toReturn.Picture = userInfoJson.ContainsKey("profile_image_url_https") ? this.GetUserImage((string)userInfoJson["profile_image_url_https"]) : new byte[0];

                return toReturn;

            } catch (Exception ex)
            {

                throw ex;

            }//end try catch
        }
        public User GetUserInfoObject(AccountOAuth accountOAuth)
        {
            try {

                User toReturn = new User ();
                string userInfoReponse = this.GetUserInfo ();

                JsonValue userInfoJson = JsonValue.Parse (userInfoReponse);
                accountOAuth.OAuthID = (string)userInfoJson ["id"];
                accountOAuth.OAuthToken = this.AccessToken;
                accountOAuth.OAuthType = this.ProviderType;

                /* Facebook doesn't allow us to get birthday for some reason, commenting this out
                 *
                DateTime birthDay = new DateTime(1900, 1, 1);
                if (userInfoJson.ContainsKey("birthday"))
                {
                    DateTime.TryParse((string)userInfoJson["birthday"], out birthDay);
                }//end if
                 *
                 */
                toReturn.FirstName = userInfoJson.ContainsKey ("first_name") ? (string)userInfoJson ["first_name"] : string.Empty;
                toReturn.LastName = userInfoJson.ContainsKey ("last_name") ? (string)userInfoJson ["last_name"] : string.Empty;
                toReturn.DateOfBirth = new DateTime (1900, 1, 1);
                toReturn.EmailAddress = userInfoJson.ContainsKey ("email") ? (string)userInfoJson ["email"] : string.Empty;

                toReturn.Picture = new byte[0];

                return toReturn;

            } catch (Exception ex) {

                throw ex;

            }//end try catch
        }
        private void Service_AuthenticationTokenGetCompleted(object sender, AuthenticationTokenGetCompletedEventArgs e)
        {
            LOLConnectClient service = (LOLConnectClient)sender;
            service.AuthenticationTokenGetCompleted -= Service_AuthenticationTokenGetCompleted;

            string activityMessage = user == UserType.NewUser ?
                 Application.Context.Resources.GetString(Resource.String.loginRegisteringUser) :
                 Application.Context.Resources.GetString(Resource.String.loginLoggingIn);

            parent.RunOnUiThread(delegate
            {
                Toast.MakeText(c, activityMessage, ToastLength.Short).Show();
            });

            if (null == e.Error)
            {
                Guid result = e.Result;
                if (!result.Equals(Guid.Empty))
                {
                    AndroidData.ServiceAuthToken = result.ToString();

                    AccountOAuth accountAuth = new AccountOAuth();
                    User userObj = null;
                    ISocialProviderManager provider = (ISocialProviderManager)e.UserState;

                    try
                    {
                        userObj = provider.GetUserInfoObject(accountAuth);
                    } catch (Exception ex)
                    {
                        parent.RunOnUiThread(delegate
                        {
                            GeneralUtils.Alert(c, Application.Context.Resources.GetString(Resource.String.loginAuthError),
                                string.Format("{0} {1}", Application.Context.Resources.GetString(Resource.String.errorCouldNotGetUserInfoFormat), ex.Message), parent);
                        });
            #if DEBUG
                        System.Diagnostics.Debug.WriteLine("Problem with authenticating using {0}. Message = {1}. StackTrace = {2}", accountAuth.OAuthType.ToString(), ex.Message, ex.StackTrace);
            #endif
                        return;
                    }//end try catch

                    if (user == UserType.NewUser)
                    {
                        service.UserCreateCompleted += Service_UserCreateCompleted;
                        service.UserCreateAsync(AndroidData.NewDeviceID,
                                        DeviceDeviceTypes.Android,
                                        accountAuth.OAuthType,
                                        accountAuth.OAuthID,
                                        accountAuth.OAuthToken,
                                        userObj.FirstName,
                                        userObj.LastName,
                                        userObj.EmailAddress, string.Empty,
                                        userObj.Picture,
                                        userObj.DateOfBirth,
                                        string.Empty, // username
                                        string.Empty, // description
                                        0, // latitude
                                        0, // longtitude
                                        false, //showLocation
                                        false, // allowLocationSearch
                                        false, // allowSearch
                                        User.Gender.Male, // gender
                                        new Guid(AndroidData.ServiceAuthToken), accountAuth);

                    } else
                    {
                        service.UserLoginCompleted += Service_UserLoginCompleted;
                        service.UserLoginAsync(AndroidData.NewDeviceID,
                                               DeviceDeviceTypes.Android,
                                               LOLConstants.DefaultGuid,
                                               accountAuth.OAuthID,
                                               accountAuth.OAuthToken,
                                               accountAuth.OAuthType,
                                               userObj.EmailAddress,
                                               string.Empty,
                                               new Guid(AndroidData.ServiceAuthToken));
                    }//end if else
                } else
                {
                    parent.RunOnUiThread(delegate
                    {
                        GeneralUtils.Alert(c, Application.Context.Resources.GetString(Resource.String.loginAuthError), Application.Context.Resources.GetString(Resource.String.authNotAuthenticated), parent);
                    });
                }//end if else
            } else
            {
            #if(DEBUG)
                System.Diagnostics.Debug.WriteLine("Exception in AuthenticationTokenGetCompleted! {0}--{1}", e.Error.Message, e.Error.StackTrace);
            #endif
                parent.RunOnUiThread(delegate
                {
                    GeneralUtils.Alert(c, Application.Context.Resources.GetString(Resource.String.loginAuthError), Application.Context.Resources.GetString(Resource.String.authNotAuthenticated), parent);
                });
            }//end if else
        }
        public dealWithWebView(Activity f, AccountOAuth.OAuthTypes ProviderType, ISocialProviderManager Provider, ImageButton btnBack)
        {
            this.parent = f;
            this.Provider = Provider;
            this.ProviderType = ProviderType;
            string authUrl = this.Provider.BrowserAuthUrl;
            user = AndroidData.user;
            btnBack.Click += delegate
            {
                parent.Finish();
            };
            switch (ProviderType)
            {
                case AccountOAuth.OAuthTypes.Google:
                    AccessTokenReceived += (occurred, expires, accessToken, accessTokenSecret, refreshToken) =>
                    {
                        AndroidData.GooglePlusAccessToken = accessToken;
                        AndroidData.GooglePlusRefreshToken = refreshToken;
                        AndroidData.GoogleAccessTokenExpiration = expires;
                        startUserLogin(Provider);
                    };
                    break;

                case AccountOAuth.OAuthTypes.FaceBook:
                    LFacebookManager lFace = new LFacebookManager(LOLConstants.FacebookAPIKey, LOLConstants.FacebookAppSecret);
                    AccessTokenReceived += (occurred, expires, accessToken, accessTokenSecret, refreshToken) =>
                    {
                        try
                        {
                            if (lFace.RefreshAccessToken())
                            {
                                AndroidData.FacebookAccessToken = lFace.AccessToken;
                                AndroidData.FacebookAccessTokenExpiration = lFace.AccessTokenExpirationTime ?? DateTime.Now;
                            }
                        } catch
                        {
                            AndroidData.FacebookAccessToken = accessToken;
                            AndroidData.FacebookAccessTokenExpiration = expires;
                        }
                        startUserLogin(Provider);
                    };
                    break;

                case AccountOAuth.OAuthTypes.LinkedIn:
                    AccessTokenReceived += (occurred, expires, accessToken, accessTokenSecret, refreshToken) =>
                    {
                        AndroidData.LinkedInAccessToken = accessToken;
                        AndroidData.LinkedInAccessTokenSecret = accessTokenSecret;
                        startUserLogin(Provider);
                    };
                    break;

                case AccountOAuth.OAuthTypes.Twitter:
                    LTwitterManager lTwit = new LTwitterManager(LOLConstants.TwitterConsumerKey, LOLConstants.TwitterConsumerSecret, AndroidData.TwitterAccessToken, AndroidData.TwitterAccessTokenSecret,
                        AndroidData.TwitterScreenName, AndroidData.TwitterUserId);
                    AccessTokenReceived += (occurred, expires, accessToken, accessTokenSecret, refreshToken) =>
                    {
                        AndroidData.TwitterAccessToken = accessToken;
                        AndroidData.TwitterAccessTokenSecret = accessTokenSecret;
                        AndroidData.TwitterScreenName = lTwit.ScreenName;
                        AndroidData.TwitterUserId = lTwit.UserId;
                        startUserLogin(Provider);
                    };
                    break;

                case AccountOAuth.OAuthTypes.YouTube:
                    AccessTokenReceived += (occurred, expires, accessToken, accessTokenSecret, refreshToken) =>
                    {
                        AndroidData.YouTubeAccessToken = accessToken;
                        AndroidData.YouTubeRefreshToken = refreshToken;
                        AndroidData.YouTubeAccessTokenExpiration = expires;
                        startUserLogin(Provider);
                    };
                    break;
            }
        }
Exemplo n.º 8
0
        public User GetUserInfoObject(AccountOAuth accountOAuth)
        {
            try
            {

                User toReturn = new User();
                string userInfoResponse = this.GetUserInfo();

                JsonValue userInfoJson = JsonValue.Parse(userInfoResponse);
                accountOAuth.OAuthID = (string)userInfoJson["id"];
                accountOAuth.OAuthToken = this.AccessToken;
                accountOAuth.OAuthType = this.ProviderType;

            //			string fullName = userInfoJson.ContainsKey("name") ? (string)userInfoJson["name"] : string.Empty;
                string firstName = userInfoJson.ContainsKey("given_name") ? (string)userInfoJson["given_name"] : string.Empty;
                string lastName = userInfoJson.ContainsKey("family_name") ? (string)userInfoJson["family_name"] : string.Empty;

                toReturn.FirstName = firstName;
                toReturn.LastName = lastName;
                toReturn.EmailAddress = userInfoJson.ContainsKey("email") ? (string)userInfoJson["email"] : string.Empty;
                toReturn.DateOfBirth = userInfoJson.ContainsKey("birthday") ? DateTime.Parse((string)userInfoJson["birthday"]) : new DateTime(1900, 1, 1);

                string profilePicUrl = userInfoJson.ContainsKey("picture") ? (string)userInfoJson["picture"] : string.Empty;

                toReturn.Picture = string.IsNullOrEmpty(profilePicUrl) ? new byte[0] : this.GetUserImage(profilePicUrl);

                return toReturn;

            } catch (Exception ex)
            {
                throw ex;
            }//end try catch
        }
        public User GetUserInfoObject(AccountOAuth accountOAuth)
        {
            try
            {

                User toReturn = new User();
                string userInfoResponse = this.GetUserInfo();

                XDocument xDoc = XDocument.Parse(userInfoResponse);
                XElement personElement = xDoc.Element(XName.Get("person"));

                accountOAuth.OAuthID = personElement.Element(XName.Get("id")).Value;
                accountOAuth.OAuthToken = this.AccessToken;
                accountOAuth.OAuthType = this.ProviderType;

                XElement firstNameElement = personElement.Element(XName.Get("first-name"));
                XElement lastNameElement = personElement.Element(XName.Get("last-name"));
                XElement birthDayElement = personElement.Element(XName.Get("date-of-birth"));
                XElement profilePicElement = personElement.Element(XName.Get("picture-url"));
                XElement emailAddressElement = personElement.Element(XName.Get("email-address"));

                toReturn.FirstName = firstNameElement != null ? firstNameElement.Value : string.Empty;
                toReturn.LastName = lastNameElement != null ? lastNameElement.Value : string.Empty;
                toReturn.DateOfBirth = birthDayElement != null ? DateTime.Parse(birthDayElement.Value) : new DateTime(1900, 1, 1);
                toReturn.Picture = profilePicElement != null ? this.GetUserImage(profilePicElement.Value) : new byte[0];
                toReturn.EmailAddress = emailAddressElement != null ? emailAddressElement.Value : string.Empty;

                return toReturn;

            } catch (Exception ex)
            {

                throw ex;

            }//end try catch
        }