[C#]DropBox開發系列 - 使用DropNet進行DropBox的二次登入
return;
}
...
if (DoOAuth(callbackUrl, cancelCallbackUrl, size) == DialogResult.OK)
{
var accessToken = m_DropNetClient.GetAccessToken();
Properties.Settings.Default.SECRET = accessToken.Secret;
Properties.Settings.Default.TOKEN = accessToken.Token;
Properties.Settings.Default.Save();
}</pre></div>
namespace DropNetDemo { public partial class Form1 : Form { #region Var private DropNetClient _dropNetClient; #endregion
#region Private Property
private DropNetClient m_DropNetClient
{
get
{
return _dropNetClient ?? (_dropNetClient = new DropNetClient(tbxAppKey.Text, tbxAppSecret.Text));
}
set
{
_dropNetClient = value;
}
}
#endregion
public Form1()
{
InitializeComponent();
}
private void SetSecretAndToken(string secret, string token)
{
Settings.Default.SECRET = secret;
Settings.Default.TOKEN = token;
}
private void btnLogin_Click(object sender, EventArgs e)
{
if (!String.IsNullOrEmpty(Properties.Settings.Default.SECRET) && !String.IsNullOrEmpty(Properties.Settings.Default.TOKEN))
{
m_DropNetClient.UserLogin = new UserLogin()
{
Secret = Properties.Settings.Default.SECRET,
Token = Properties.Settings.Default.TOKEN
};
return;
}
var callbackUrl = "https://www.dropbox.com/1/oauth/authorize";
var cancelCallbackUrl = "https://www.dropbox.com/home";
var size = new Size(1024, 600);
if (DoOAuth(callbackUrl, cancelCallbackUrl, size) == DialogResult.OK)
{
var accessToken = m_DropNetClient.GetAccessToken();
Properties.Settings.Default.SECRET = accessToken.Secret;
Properties.Settings.Default.TOKEN = accessToken.Token;
Properties.Settings.Default.Save();
}
}
private DialogResult DoOAuth(string callbackUrl, string cancelCallbackUrl, System.Drawing.Size size)
{
using (var dialog = new Form())
{
var browesr = new WebBrowser()
{
Dock = DockStyle.Fill
};
var token = m_DropNetClient.GetToken();
var authUrl = m_DropNetClient.BuildAuthorizeUrl();
browesr.Navigated += (s, ex) =>
{
var url = ex.Url.ToString();
if (url.Equals(callbackUrl))
{
dialog.DialogResult = DialogResult.OK;
}
else if (url.Equals(cancelCallbackUrl))
{
dialog.DialogResult = DialogResult.Cancel;
}
};
browesr.Navigate(authUrl);
dialog.Size = size;
dialog.Controls.Add(browesr);
return dialog.ShowDialog();
}
}
private void tbxAppKey_TextChanged(object sender, EventArgs e)
{
m_DropNetClient = null;
}
}
}