好的推特可能对社交媒体很有用,但对于我试图为了娱乐而创建的小应用程序却变成了一场噩梦。我到处搜索,找不到如何使用api的好解释。
我正在使用TweetSharp api,我想做的就是让用户允许我的应用程序,并能够从应用程序发布到他们的推特。
我的问题出现在应用程序发出一个密码供用户输入...用户在哪里输入?好的,所以这就是我到目前为止......如果有人能帮助我,我会非常感恩,所以我可以停止拉头发..
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using TweetSharp;
using System.Configuration;
using Hammock.Authentication.OAuth;
using System.Diagnostics;
namespace testtweet
{
public partial class Form1 : Form
{
//I already have these values not showing here for obvious reasons.
TwitterService service = new TwitterService("ConsumerKey", "ConsumerSecret");
public Form1()
{
InitializeComponent();
// Pass your credentials to the service
// Step 1 - Retrieve an OAuth Request Token
OAuthRequestToken requestToken = service.GetRequestToken();
// Step 2 - Redirect to the OAuth Authorization URL
Uri uri = service.GetAuthorizationUri(requestToken);
Form2 frm = new Form2(uri.ToString());
frm.Show();
OAuthRequestToken requestToken = service.GetRequestToken();
// Step 3 - Exchange the Request Token for an Access Token
string verifier = "123456"; // <-- This is input into your application by your user
OAuthAccessToken access = service.GetAccessToken(requestToken, verifier);
// Step 4 - User authenticates using the Access Token
service.AuthenticateWith(access.Token, access.TokenSecret);
IEnumerable<TwitterStatus> mentions = service.ListTweetsMentioningMe();
}
}
}
在我的Form2上
public Form2(string url)
{
InitializeComponent();
webBrowser1.Navigate(url);
}
这是我迷路的地方。正如您所看到的那样,步骤3正在寻找密码。如何在那里设置它?我有一个想法直接在app.config中写,但是 我如何知道它何时生成?我应该制作第3个表格让用户在那里输入密码吗?
答案 0 :(得分:2)
所以这就是我所拥有的(在设计器中添加名为webBrowser1的webbrowser)
public partial class TwitterBrowser : Form
{
public TwitterBrowser()
{
InitializeComponent();
webBrowser1.Navigated += OnNavigate;
}
private void OnNavigate(object sender, WebBrowserNavigatedEventArgs e)
{
if (e.Url.ToString() != @"https://api.twitter.com/oauth/authorize")
return;
if (webBrowser1.Document != null)
{
var regex = new Regex("<code>([0-9]*)</code>", RegexOptions.Multiline);
VerificationCode = regex.Match(webBrowser1.DocumentText).Groups[1].Value;
Close();
}
}
public string VerificationCode { get; private set; }
#region Implementation of ITwitterUserInteraction
public void NavigateTo(Uri uri)
{
webBrowser1.Navigate(uri);
}
#endregion
}
然后像这样使用它:
var browser = new TwitterBrowser();
browser.NavigateTo(uri);
browser.ShowDialog();
result = browser.VerificationCode;