private void webBrowser1_Navigated(object sender, System.Windows.Navigation.NavigationEventArgs e) { // whenever the browser navigates to a new url, try parsing the url // the url may be the result of OAuth 2.0 authentication. FacebookOAuthResult oauthResult; if (FacebookOAuthResult.TryParse(e.Uri, out oauthResult)) { // The url is the result of OAuth 2.0 authentication. if (oauthResult.IsSuccess) { var oauthClient = new FacebookOAuthClient { AppId = AppId, AppSecret = AppSecret }; // we got the code here var code = oauthResult.Code; oauthClient.ExchangeCodeForAccessTokenCompleted += (o, args) => { // make sure to check that no error has occurred. if (args.Error != null) { // make sure to access ui stuffs on the correct thread. Dispatcher.BeginInvoke( () => { MessageBox.Show(args.Error.Message); NavigationService.Navigate(new Uri("/MainPage.xaml", UriKind.Relative)); }); } else { var result = (IDictionary <string, object>)args.GetResultData(); var accessToken = (string)result["access_token"]; // make sure to access ui stuffs on the correct thread. Dispatcher.BeginInvoke(() => NavigationService.Navigate(new Uri("/FacebookInfoPage.xaml?access_token=" + accessToken, UriKind.Relative))); } }; oauthClient.ExchangeCodeForAccessTokenAsync(code); } else { // the user clicked don't allow or some other error occurred. MessageBox.Show(oauthResult.ErrorDescription); } } else { // The url is NOT the result of OAuth 2.0 authentication. } }
private void webBrowser_Navigated(object sender, NavigationEventArgs e) { Debug.WriteLine("webBrowser_Navigated: {0}", e.Uri); FacebookOAuthResult oauthResult; if (!FacebookOAuthResult.TryParse(e.Uri, out oauthResult) || !oauthResult.IsSuccess) { return; } var oauthClient = new FacebookOAuthClient { AppId = ApplicationID }; oauthClient.AppSecret = ApplicationSecret; var code = oauthResult.Code; // アクセストークンを要求(非同期実行) oauthClient.ExchangeCodeForAccessTokenCompleted += oauthClient_ExchangeCodeForAccessTokenCompleted; oauthClient.ExchangeCodeForAccessTokenAsync(code); }