验证 Twitter 用户并在他的帐户 C# 上发布推文

Posted

技术标签:

【中文标题】验证 Twitter 用户并在他的帐户 C# 上发布推文【英文标题】:Verify Twitter User and Post tweet on his on account C# 【发布时间】:2017-06-13 00:51:47 【问题描述】:

我有一个带有三个文本框和一个发布推文的按钮的 asp.net c# 页面。

1) 输入用户名

2) 输入密码

3) 推文文本

4) 发布推文按钮

问题是我想在用户帐户上发布推文。 在我的网页上,第一个用户将输入他的用户名和密码。我会从推特验证用户信息,然后在他自己的帐户上发布推文。

我们可以在 Twitterizer 中做类似的事情。

Twitter twitter = new Twitter("用户名", "密码", "来源");

twitter.Status.Update("更新");

我知道现在我们不能使用 Twitterizer。

我使用了以下链接中提到的示例,但它也不起作用。

Twitter: verifying username and password in C#

示例代码 ///////////////////////////////////////// ////////////////////////////////////////

public bool CheckTwitterCredentials(string UserName, string Password)

    // Assume failure
    bool Result = false;

    // A try except block to handle any exceptions
    try 
        // Encode the user name with password
        string UserPass = Convert.ToBase64String(
            System.Text.Encoding.UTF8.GetBytes(UserName + ":" + Password));

        // Create our HTTP web request object
        HttpWebRequest Request = 
            (HttpWebRequest)WebRequest.Create("http://twitter.com/account/verify_credentials.xml");

        // Set up our request flags and submit type
        Request.Method = "GET";
        Request.ContentType = "application/x-www-form-urlencoded";

        // Add the authorization header with the encoded user name and password
        Request.Headers.Add("Authorization", "Basic " + UserPass);

        // Use an HttpWebResponse object to handle the response from Twitter
        HttpWebResponse WebResponse = (HttpWebResponse)Request.GetResponse();

        // Success if we get an OK response
        Result = WebResponse.StatusCode == HttpStatusCode.OK;
     catch (Exception Ex) 
        System.Diagnostics.Debug.WriteLine("Error: " + Ex.Message);
    

    // Return success/failure
    return Result;

/////////////////////////////////////// //////////////////////////////////////////////// p>

现在 twitter 已经提供了一些库来使用 dot net C#。

https://dev.twitter.com/resources/twitter-libraries#dotnet

.NET

• @joemayo 的 LINQ2Twitter(示例)

• SpringSource 为 Twitter 提供的 Spring.NET 社交扩展 — 具有连接支持和 Twitter 的 API 绑定的 Spring.NET 社交扩展。

• @danielcrenna 的 TweetSharp — 一个用于 Twitter API 访问的 .net 库

• Linvi 维护的 Tweetinvi — 一个 Twitter .Net C# API,其使命是简化 C# 中 Twitter 应用程序的开发。流式 API 已用于研究项目,每天收集约 320 万条推文。 Twitter API 的创建易于实现新功能,目前提供对大多数功能的访问。 (文档)

• Crafted.Twitter by @martbrow — 一种与缓存兼容的解决方案 — 具有 ASP.Net Web 窗体和 MVC 的实现。让您的网站中包含推文变得容易。

我使用了以下库 TweetinviAPI。在以下链接中提到。

https://github.com/linvi/tweetinvi/wiki/Introduction#hello-world

// 设置您的凭据 (https://apps.twitter.com)

Auth.SetUserCredentials("CONSUMER_KEY", "CONSUMER_SECRET", "ACCESS_TOKEN", "ACCESS_TOKEN_SECRET");

// Publish the Tweet "Hello World" on your Timeline
Tweet.PublishTweet("Hello World!");

但问题是它发布在我自己创建的 Twitter 页面上,而不是在其他用户的 Twitter 页面上。

我想要的是,通过使用上述更新的库,用户是否可以通过任何方式将他的用户名和密码放在我的页面上以及推文的一些细节上,然后在他自己的帐户上发布推文。

请告诉我这现在是否可行。

谢谢

赛义德

【问题讨论】:

【参考方案1】:

我是 Tweetinvi 的开发者。

用户名/密码身份验证不再公开用于 Twitter 应用程序。相反,Twitter 现在要求开发人员使用 OAuth。

这对您意味着,为了在您的应用上进行身份验证,他们必须从 twitter.com 网站接受您的应用。

为此,Twitter REST API 提供了 2 个身份验证过程。基于 PIN 和 URL 重定向。建议网站使用 URL 重定向。

您可以在这里了解更多信息:https://github.com/linvi/tweetinvi/wiki/Authentication#url-redirect-authentication

我还建议您看一下https://github.com/linvi/tweetinvi/wiki/Authentication#web-application-considerations,以便您更好地了解身份验证机制。

最后,我建议您查看 Examplinvi.ASP.NET 或 Examplinvi.ASP.NET.Core,这是一个 MVC 项目,完全符合您的要求:Authentication + Post Tweet

如果您之后有更多问题,我很乐意为您提供更多帮助!

干杯, 临维

【讨论】:

您好 Linvi,感谢您的回复。作为一名开发人员,您在 tweetinvi 上做得很好。我已经检查了您在回复中提到的 MVC 项目。问题是我想在用户 twitter 页面上分享带有图像的产品,而不是在我自己的 twitter 创建的应用程序上,dev.twitter.comthanks 您指向 Examplinvi.web 的链接已失效。 @Matthias 感谢您的反馈,现已更新。【参考方案2】:

试试那个代码:

var tweet = Search.SearchTweets("***");
var textToPublish = $"@tweet.CreatedBy.ScreenName";
var reply = Tweet.PublishTweet(new PublishTweetParameters(textToPublish)
                
                    InReplyToTweet = tweet
                );

【讨论】:

以上是关于验证 Twitter 用户并在他的帐户 C# 上发布推文的主要内容,如果未能解决你的问题,请参考以下文章

是否可以使用twitter api查看受保护的帐户?

从 Twitter API 获取用户的电子邮件以进行外部登录身份验证 ASP.NET MVC C#

Twitter 用户查找请求错误混淆

使用 Everyauth/Passport.js 向 Twitter 进行身份验证,同时询问用户名/电子邮件/密码

页面刷新后如何保持用户登录

Angular/Node 验证用户