/// <summary>
        /// This function extracts access_token from the response returned from web authentication broker
        /// and uses that token to get user information using facebook graph api.
        /// </summary>
        /// <param name="responseData">responseData returned from AuthenticateAsync result.</param>
        private async Task GetFacebookUserNameAsync(string responseData)
        {
            var decoder = new WwwFormUrlDecoder(responseData);
            var error   = decoder.TryGetValue("error");

            if (error != null)
            {
                FacebookUserName.Text = $"Error: {error}";
                return;
            }

            // You can store access token locally for further use.
            string access_token = decoder.GetFirstValueByName("access_token");
            string expires_in   = decoder.TryGetValue("expires_in"); // expires_in is optional

            HttpClient httpClient = new HttpClient();
            Uri        uri        = new Uri($"https://graph.facebook.com/me?access_token={Uri.EscapeDataString(access_token)}");

            HttpGetStringResult result = await httpClient.TryGetStringAsync(uri);

            if (result.Succeeded)
            {
                JsonObject userInfo = JsonObject.Parse(result.Value).GetObject();
                FacebookUserName.Text = userInfo.GetNamedString("name");
            }
            else
            {
                FacebookUserName.Text = "Error contacting Facebook";
            }
        }
Esempio n. 2
0
        private async Task <String> SendDataAsync(String Url)
        {
            HttpClient          httpClient = new HttpClient();
            HttpGetStringResult result     = await httpClient.TryGetStringAsync(new Uri(Url));

            if (result.Succeeded)
            {
                return(result.Value);
            }
            else
            {
                rootPage.NotifyUser("Error getting data from server." + result.ExtendedError.Message, NotifyType.StatusMessage);
                return(null);
            }
        }
Esempio n. 3
0
        private async Task <string> GetTwitterRequestTokenAsync(string twitterCallbackUrl, string consumerKey)
        {
            // Acquiring a request token
            string TwitterUrl = "https://api.twitter.com/oauth/request_token";

            string nonce               = GetNonce();
            string timeStamp           = GetTimeStamp();
            string SigBaseStringParams = "oauth_callback=" + Uri.EscapeDataString(twitterCallbackUrl);

            SigBaseStringParams += "&" + "oauth_consumer_key=" + consumerKey;
            SigBaseStringParams += "&" + "oauth_nonce=" + nonce;
            SigBaseStringParams += "&" + "oauth_signature_method=HMAC-SHA1";
            SigBaseStringParams += "&" + "oauth_timestamp=" + timeStamp;
            SigBaseStringParams += "&" + "oauth_version=1.0";
            string SigBaseString = "GET&";

            SigBaseString += Uri.EscapeDataString(TwitterUrl) + "&" + Uri.EscapeDataString(SigBaseStringParams);
            string Signature = GetSignature(SigBaseString, TwitterClientSecret.Text);

            TwitterUrl += "?" + SigBaseStringParams + "&oauth_signature=" + Uri.EscapeDataString(Signature);
            HttpClient httpClient    = new HttpClient();
            string     request_token = null;

            HttpGetStringResult result = await httpClient.TryGetStringAsync(new Uri(TwitterUrl));

            if (result.Succeeded)
            {
                string   oauth_token_secret = null;
                string[] keyValPairs        = result.Value.Split('&');

                for (int i = 0; i < keyValPairs.Length; i++)
                {
                    string[] splits = keyValPairs[i].Split('=');
                    switch (splits[0])
                    {
                    case "oauth_token":
                        request_token = splits[1];
                        break;

                    case "oauth_token_secret":
                        oauth_token_secret = splits[1];
                        break;
                    }
                }
            }
            return(request_token);
        }
        /// <summary>
        /// This function extracts access_token from the response returned from web authentication broker
        /// and uses that token to get user information using facebook graph api.
        /// </summary>
        /// <param name="responseData">responseData returned from AuthenticateAsync result.</param>
        private async Task GetFacebookUserNameAsync(string responseData)
        {
            var decoder = new WwwFormUrlDecoder(responseData);
            var error   = decoder.TryGetValue("error");

            if (error != null)
            {
                FacebookUserName.Text = $"Error: {error}";
                return;
            }

            // You can store access token locally for further use.
            string access_token = decoder[0].Value;

            this.fb_token = decoder[0].Value;
            string expires_in = decoder.TryGetValue("expires_in"); // expires_in is optional

            Windows.Web.Http.HttpClient httpClient = new Windows.Web.Http.HttpClient();
            Uri uri = new Uri($"https://graph.facebook.com/me?fields=id,name,picture,birthday&access_token={Uri.EscapeDataString(access_token)}");

            HttpGetStringResult result = await httpClient.TryGetStringAsync(uri);

            if (result.Succeeded)
            {
                Windows.Data.Json.JsonObject userInfo = Windows.Data.Json.JsonObject.Parse(result.Value).GetObject();
                FacebookUserName.Text = userInfo.GetNamedString("name");
                this.userID           = userInfo.GetNamedString("id");
            }
            else
            {
                FacebookUserName.Text = "Error contacting Facebook";
            }

            Windows.Web.Http.HttpClient httpClient2 = new Windows.Web.Http.HttpClient();
            Uri uri2 = new Uri($"https://graph.facebook.com/{this.userID}/accounts?fields=name,access_token&access_token={this.fb_token}");

            HttpGetStringResult myresult = await httpClient.TryGetStringAsync(uri2);

            if (myresult.Succeeded)
            {
                Windows.Data.Json.JsonObject userInfo2 = Windows.Data.Json.JsonObject.Parse(myresult.Value).GetObject();
                this.Page_token = userInfo2["data"].GetArray()[0].GetObject().GetNamedString("access_token");
            }
            else
            {
                Debug.Write("man ta osso!");
            }

            Windows.Web.Http.HttpClient httpClient3 = new Windows.Web.Http.HttpClient();
            Uri uri3 = new Uri($"https://graph.facebook.com/{this.userID}/accounts?access_token={this.fb_token}");

            HttpGetStringResult result3 = await httpClient.TryGetStringAsync(uri3);

            if (result3.Succeeded)
            {
                Windows.Data.Json.JsonObject userInfo = Windows.Data.Json.JsonObject.Parse(result3.Value).GetObject();
                this.PageId = userInfo["data"].GetArray()[0].GetObject().GetNamedString("id");
            }
            else
            {
                FacebookUserName.Text = "Error contacting Facebook";
            }
        }