Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void GooglePlusLoginPage_Loaded(object sender, RoutedEventArgs e)
- {
- var url = "https://accounts.google.com/o/oauth2/auth?response_type=code&redirect_uri=" + RedirctedUri + "&scope=https://www.googleapis.com/auth/plus.login%20https://www.googleapis.com/auth/plus.me%20https://www.googleapis.com/auth/userinfo.email%20https://www.googleapis.com/auth/userinfo.profile&client_id=" + ClientId;
- webBrowserGooglePlusLogin.IsScriptEnabled = true;
- webBrowserGooglePlusLogin.Navigate(new Uri(url, UriKind.RelativeOrAbsolute));
- }
- private void webBrowserGooglePlusLogin_Navigated(object sender, System.Windows.Navigation.NavigationEventArgs e)
- {
- webBrowserGooglePlusLogin.Visibility = Visibility.Visible;
- }
- private void webBrowserGooglePlusLogin_Navigating(object sender, NavigatingEventArgs e)
- {
- if (e.Uri.Host.Equals("localhost"))
- {
- webBrowserGooglePlusLogin.Visibility = Visibility.Collapsed;
- e.Cancel = true;
- int pos = e.Uri.Query.IndexOf("=");
- //get the access code
- string messageCode = pos > -1 ? e.Uri.Query.Substring(pos + 1) : null;
- //when code is not equeals to null get the access token
- if (messageCode != null)
- {
- //get the access token
- Parameters = "code=" + messageCode + "&client_id=" + ClientId + "&client_secret=" + ClientSecret + "&redirect_uri=" + RedirctedUri + "&grant_type=authorization_code";
- HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create("https://accounts.google.com/o/oauth2/token");
- webRequest.Method = "POST";
- webRequest.ContentType = "application/x-www-form-urlencoded";
- // Start web request
- webRequest.BeginGetRequestStream(new AsyncCallback(GetRequestStreamCallback), webRequest);
- }
- }
- }
- void GetRequestStreamCallback(IAsyncResult asynchronousResult)
- {
- try
- {
- HttpWebRequest webRequest = (HttpWebRequest)asynchronousResult.AsyncState;
- // End the stream request operation
- Stream postStream = webRequest.EndGetRequestStream(asynchronousResult);
- byte[] byteArray = Encoding.UTF8.GetBytes(Parameters);
- // Add the post data to the web request
- postStream.Write(byteArray, 0, byteArray.Length);
- postStream.Close();
- // Start the web request
- webRequest.BeginGetResponse(new AsyncCallback(GetResponseCallback), webRequest);
- }
- catch (WebException ex)
- {
- }
- }
- void GetResponseCallback(IAsyncResult asynchronousResult)
- {
- try
- {
- var request = (HttpWebRequest)asynchronousResult.AsyncState;
- using (var resp = (HttpWebResponse)request.EndGetResponse(asynchronousResult))
- {
- using (var streamResponse = resp.GetResponseStream())
- {
- var GooglePlusSerializerData = new DataContractJsonSerializer(typeof(GooglePlusAccessToken));
- var GooglePlusProfileData = GooglePlusSerializerData.ReadObject(streamResponse) as GooglePlusAccessToken;
- this.Dispatcher.BeginInvoke(
- (Action<GooglePlusAccessToken>)((GooglePlusUserData) =>
- {
- //save the response
- thisApp.AccessToken = googlePlusTokens.AccessToken = GooglePlusUserData.AccessToken;
- thisApp.LoggedBy = "Google+";
- googlePlusTokens.RefreshToken = GooglePlusUserData.RefreshToken;
- googlePlusTokens.ExpiresIn = GooglePlusUserData.ExpiresIn;
- googlePlusTokens.TokenType = GooglePlusUserData.TokenType;
- // request user profile
- //RequestForUserProfile();
- NavigationService.GoBack();
- }), GooglePlusProfileData);
- }
- }
- }
- catch (WebException ex)
- {
- }
- }
Add Comment
Please, Sign In to add comment