コード例 #1
0
ファイル: InitialPage.xaml.cs プロジェクト: yikaraman/tinder
        private async System.Threading.Tasks.Task Authenticate(string accessToken, string fbid)
        {
            ProfilePhoto.Background = new ImageBrush()
            {
                ImageSource = new BitmapImage(new Uri(String.Format("https://graph.facebook.com/me/picture?access_token={0}&height=100&width=100", accessToken)))
            };

            FacebookSessionInfo sessionInfo = new FacebookSessionInfo();

            sessionInfo.FacebookToken = accessToken;
            sessionInfo.FacebookID    = fbid;

            Geolocator location = new Geolocator();

            location.DesiredAccuracy = PositionAccuracy.Default;
            var usrLocation = await location.GetGeopositionAsync();

            TinderSession activeSession = TinderSession.CreateNewSession(sessionInfo, new Position()
            {
                Latitude = usrLocation.Coordinate.Latitude, Longitude = usrLocation.Coordinate.Longitude
            });

            if (await activeSession.Authenticate())
            {
                (App.Current as App).RightSideBar.DataContext = activeSession.Matches;

                TopBarViewModel.ShowTopButtons = System.Windows.Visibility.Visible;

                NavigationService.Navigate(new Uri("/MainPage.xaml", UriKind.Relative));

                App.RootFrame.RemoveBackEntry();
            }
        }
コード例 #2
0
        //private async System.Threading.Tasks.Task Authenticate(string accessToken, string fbid)
        //{
        //    ProfilePhoto.Background = new ImageBrush() { ImageSource = new BitmapImage(new Uri(String.Format("https://graph.facebook.com/me/picture?access_token={0}&height=100&width=100", accessToken))) };

        //    FacebookSessionInfo sessionInfo = new FacebookSessionInfo();
        //    sessionInfo.FacebookToken = accessToken;
        //    sessionInfo.FacebookID = fbid;

        //    Geolocator location = new Geolocator();
        //    location.DesiredAccuracy = PositionAccuracy.Default;
        //    var usrLocation = await location.GetGeopositionAsync();

        //    TinderSession activeSession = TinderSession.CreateNewSession(sessionInfo, new GeographicalCordinates() { Latitude = usrLocation.Coordinate.Latitude, Longitude = usrLocation.Coordinate.Longitude });
        //    if (await activeSession.Authenticate())
        //    {
        //        (App.Current as App).RightSideBar.DataContext = activeSession.Matches;

        //        TopBarViewModel.ShowTopButtons = System.Windows.Visibility.Visible;

        //        NavigationService.Navigate(new Uri("/MainPage.xaml", UriKind.Relative));

        //        App.RootFrame.RemoveBackEntry();
        //    }
        //}

        private async System.Threading.Tasks.Task Authenticate(string accessToken, string lkId)
        {
            // INICIO
            string _requestPeopleUrl = "http://api.linkedin.com/v1/people/~";
            //string _requestPeopleUrl = "https://api.linkedin.com/v1/people/~:(id,first-name,last-name,headline)";

            string nonce     = oAuthUtil.GetNonce();
            string timeStamp = oAuthUtil.GetTimeStamp();

            try
            {
                System.Net.Http.HttpClient httpClient = new System.Net.Http.HttpClient();
                httpClient.MaxResponseContentBufferSize         = int.MaxValue;
                httpClient.DefaultRequestHeaders.ExpectContinue = false;
                System.Net.Http.HttpRequestMessage requestMsg = new System.Net.Http.HttpRequestMessage();
                requestMsg.Method     = new System.Net.Http.HttpMethod("GET");
                requestMsg.RequestUri = new Uri(_requestPeopleUrl, UriKind.Absolute);
                requestMsg.Headers.Add("x-li-format", "json");


                string sigBaseStringParams = "oauth_consumer_key=" + _consumerKey;
                sigBaseStringParams += "&" + "oauth_nonce=" + nonce;
                sigBaseStringParams += "&" + "oauth_signature_method=" + "HMAC-SHA1";
                sigBaseStringParams += "&" + "oauth_timestamp=" + timeStamp;
                sigBaseStringParams += "&" + "oauth_token=" + _accessToken;
                sigBaseStringParams += "&" + "oauth_verifier=" + _oAuthVerifier;
                sigBaseStringParams += "&" + "oauth_version=1.0";
                string sigBaseString = "GET&";
                sigBaseString += Uri.EscapeDataString(_requestPeopleUrl) + "&" + Uri.EscapeDataString(sigBaseStringParams);

                // LinkedIn requires both consumer secret and request token secret
                string signature = oAuthUtil.GetSignature(sigBaseString, _consumerSecretKey, _accessTokenSecretKey);

                string data = "realm=\"http://api.linkedin.com/\", oauth_consumer_key=\"" + _consumerKey
                              +
                              "\", oauth_token=\"" + _accessToken +
                              "\", oauth_verifier=\"" + _oAuthVerifier +
                              "\", oauth_nonce=\"" + nonce +
                              "\", oauth_signature_method=\"HMAC-SHA1\", oauth_timestamp=\"" + timeStamp +
                              "\", oauth_version=\"1.0\", oauth_signature=\"" + Uri.EscapeDataString(signature) + "\"";

                requestMsg.Headers.Authorization = new AuthenticationHeaderValue("OAuth", data);
                var response = await httpClient.SendAsync(requestMsg);

                var text = response.Content.ReadAsStringAsync();

                _linkedInProfile = await text;
            }
            catch (Exception Err)
            {
                throw;
            }

            //<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
            //<person>
            //  <first-name>Felipe</first-name>
            //  <last-name>Cembranelli</last-name>
            //  <headline>Manager at CI&amp;T</headline>
            //  <site-standard-profile-request>
            //    <url>https://www.linkedin.com/profile/view?id=3770090&amp;authType=name&amp;authToken=moVF&amp;trk=api*a3576543*s3647743*</url>
            //  </site-standard-profile-request>
            //</person>


            var linkedinUser = JsonConvert.DeserializeObject <LinkedinUser>(_linkedInProfile);

            // FIM

            //ProfilePhoto.Background = new ImageBrush() { ImageSource = new BitmapImage(new Uri(String.Format("https://graph.facebook.com/me/picture?access_token={0}&height=100&width=100", accessToken))) };

            LinkedInSessionInfo sessionInfo = new LinkedInSessionInfo();

            sessionInfo.AcessToken   = accessToken;
            sessionInfo.LinkedInID   = linkedinUser.FirstName;
            sessionInfo.LinkedinUser = linkedinUser;

            //Geolocator location = new Geolocator();
            //location.DesiredAccuracy = PositionAccuracy.Default;
            //var usrLocation = await location.GetGeopositionAsync();

            //TinderSession activeSession = TinderSession.CreateNewSession(sessionInfo, new GeographicalCordinates() { Latitude = usrLocation.Coordinate.Latitude, Longitude = usrLocation.Coordinate.Longitude });

            TinderSession activeSession = TinderSession.CreateNewSession(sessionInfo);


            if (await activeSession.Authenticate(_consumerKey, _accessToken, _oAuthVerifier, _consumerSecretKey, _accessTokenSecretKey))
            {
                (App.Current as App).RightSideBar.DataContext = activeSession.Matches;

                TopBarViewModel.ShowTopButtons = System.Windows.Visibility.Visible;

                NavigationService.Navigate(new Uri("/MainPage.xaml", UriKind.Relative));

                App.RootFrame.RemoveBackEntry();
            }
        }