0

我目前正在考虑将 Dropbox 添加到我的 c# 软件中。我正在spring.social使用https://github.com/SpringSource/spring-net-social-dropbox

我有以下代码来进行身份验证

private void authenticateDropbox()
        {
            try
            {
                DropboxServiceProvider dropboxServiceProvider = new DropboxServiceProvider(dropboxAppKey, dropboxAppSecret, AccessLevel.AppFolder);
                //lblStatus.Content = "Getting request Token";

                OAuthToken oauthToken = dropboxServiceProvider.OAuthOperations.FetchRequestTokenAsync(null, null).Result;
                //lblStatus.Content = "Request token retrieved";

                OAuth1Parameters parameters = new OAuth1Parameters();
                string authenticateUrl = dropboxServiceProvider.OAuthOperations.BuildAuthorizeUrl(oauthToken.Value, parameters);
                //lblStatus.Content = "Redirecting user for authentication";
                Process.Start(authenticateUrl);


            }
            catch (AggregateException ex)
            {
                MessageBox.Show("AggregateException: Failed to authenticate\n\n" + ex.Message, "Authentication Error", MessageBoxButton.OK, MessageBoxImage.Error);
            }
            catch (Exception ex)
            {
                MessageBox.Show("General Exception: Failed to authenticate\n\n" + ex.Message, "Authentication Error", MessageBoxButton.OK, MessageBoxImage.Error);
            }

我成功加载了我的默认浏览器,我可以允许该应用程序并获得成功页面。同样,在它完成该Process.start()方法后,它要求用户在显示成功页面后按 Enter 继续,但是,我在 wpf 应用程序中执行此操作,我真的不想要求用户在浏览器授权后,按一个按钮使我的程序继续运行。

我在FetchRequestTokenAsync函数中看到有一个回调参数,但我不确定如何执行此操作,或者即使这是我想要的。

基本上我想要的是当浏览器说授权成功时它会关闭浏览器并且 C# 拾取它已成功授权然后继续。

感谢您的任何帮助,您可以提供。

4

1 回答 1

2

Process.Start()在控制台快速启动中使用,但如果您使用的是 WPF 应用程序,则应使用该WebBrowser控件加载授权页面。然后注册到Navigating事件,知道何时调用成功回调页面。

查看 zip 包中的 Windows Phone 7 快速入门,您可以轻松地将其移植到 WPF。 https://github.com/SpringSource/spring-net-social-dropbox/tree/master/examples/Spring.WindowsPhoneQuickStart/Spring.WindowsPhoneQuickStart

于 2012-12-15T07:53:16.890 回答