Twitter和Winform c#应用让我秃顶了

本文关键字:应用 Winform Twitter | 更新日期: 2023-09-27 18:17:59

twitter可能是很棒的社交媒体,但对于我试图创建的一个只是为了好玩的小应用程序来说,它已经变成了一个噩梦。我到处都找遍了,找不到一个关于如何使用api的好解释。

我正在使用TweetSharp api,我想做的就是让用户允许我的应用程序,并能够从应用程序发布到他们的推特。

当应用程序给出用户输入的pin码时,我的问题来了…用户会在哪里输入呢?好了,这就是我到目前为止所做的,如果有人能帮助我,我将是最伟大的,这样我就可以停止扯我的头发了。

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();
        }
    }
}

on my Form2

public Form2(string url)
{
    InitializeComponent();
    webBrowser1.Navigate(url);
}

这就是我迷路的地方。正如你所看到的步骤3是等待pin码..我将如何设置它在那里?我有一个想法,直接写在app.config,但我如何知道它何时生成?我需要做第三张表单让用户输入pin码吗?

Twitter和Winform c#应用让我秃顶了

这就是我得到的(在设计器中添加一个名为webBrowser1的浏览器)

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;