gpt4 book ai didi

c# - 在 asp.net 中代表用户发推文

转载 作者:太空宇宙 更新时间:2023-11-03 13:31:52 25 4
gpt4 key购买 nike

我一直在寻找在 Webforms 中代表用户发布推文的最新方法。我接触到的大部分信息都可以追溯到 2010 年左右,并且涉及 Twitterizer,Twitter API 不再支持它。我的问题是,是否有任何关于该主题的更新文档或示例、教程?

我已经创建了我的应用程序,拥有消费者 key 和 secret ,但我遇到的大部分代码都是用 php 编写的。任何帮助将不胜感激。

最佳答案

由于您正在使用 WebForms(通过您在评论中的回复),下面是一个使用 LINQ to Twitter 代表另一个用户发推文的示例。其他示例可能会向您展示如何将签名添加到授权 header ,但您仍然需要管理 OAuth 工作流。这应该让您了解如何在 WebForms 中管理该工作流。

LINQ to Twitter 使用不同的授权方来管理生成 OAuth 签名、管理凭据和支持 OAuth 工作流的过程。首先,像这样实例化一个 WebAuthorizer:

public partial class _Default : System.Web.UI.Page
{
private WebAuthorizer auth;
private TwitterContext twitterCtx;

protected void Page_Load(object sender, EventArgs e)
{
IOAuthCredentials credentials = new SessionStateCredentials();

if (credentials.ConsumerKey == null || credentials.ConsumerSecret == null)
{
credentials.ConsumerKey = ConfigurationManager.AppSettings["twitterConsumerKey"];
credentials.ConsumerSecret = ConfigurationManager.AppSettings["twitterConsumerSecret"];
}

auth = new WebAuthorizer
{
Credentials = credentials,
PerformRedirect = authUrl => Response.Redirect(authUrl)
};

WebAuthorizer 只需要你的ConsumerKey 和ConsumerSecret,可以保存在web.config 中。授权过程分为两部分,因为您必须将用户发送到 Twitter 以授权您的应用程序,然后 Twitter 将用户重定向回您的页面以收集其他两个 token ,即 oauth_token 和 access_token。这意味着您需要逻辑来处理来自 Twitter 的回调,它可能如下所示:

        if (!Page.IsPostBack && Request.QueryString["oauth_token"] != null)
{
auth.CompleteAuthorization(Request.Url);
}

这在您实例化 WebAuthorizer 之后进行,并确保您在执行完成之前处理 Twitter 回调。调用 CompleteAuthorize 后,进入 auth.Credentials 并获取新的用户凭据并将它们保存给登录用户。在后续查询中,您可以将所有 4 个凭据加载到 WebAuthorizer 中,LINQ to Twitter 将正常工作,而无需用户再次授权您的应用程序。

获得凭据后,您可以实例化 TwitterContext,这使您可以访问 Twitter API。这是执行此操作并执行查询的示例:

        if (auth.IsAuthorized)
{
twitterCtx = new TwitterContext(auth);

var search =
(from srch in twitterCtx.Search
where srch.Type == SearchType.Search &&
srch.Query == "LINQ to Twitter"
select srch)
.SingleOrDefault();

TwitterListView.DataSource = search.Statuses;
TwitterListView.DataBind();
}

此代码跟在对 auth.CompleteAuthorize 的调用之后,以确保填充所有凭据。 auth.IsAuthorized 验证是否存在所有 4 个凭据。

那是 TwitterContext 部分的完成和实例化,但您首先需要启动 oauth 进程。这是一个执行此操作的按钮单击处理程序:

    protected void authorizeTwitterButton_Click(object sender, EventArgs e)
{
auth.BeginAuthorization(Request.Url);
}

只需调用 BeginAuthorization,它会执行分配给 WebAuthorizer 的 PerformRedirect 属性的回调,将用户发送到 Twitter 以授权您的应用程序。如前所述,Twitter 将用户重定向回您的页面,并执行 CompleteAuthorization 以完成授权过程。我通常将 OAuth 逻辑放在单独的页面上以简化操作。

一旦用户授权您的应用程序,您就可以执行任何您想要的查询,例如下面为用户发送一些文本的方法:

    protected void postUpdateButton_Click(object sender, EventArgs e)
{
if (!Page.IsValid)
{
return;
}

twitterCtx.UpdateStatus(updateBox.Text);
updateBox.Text = string.Empty;
}

提示:SessionStateCredentials 将凭据存储在 session 状态中。因此,您要确保使用的是状态服务器、SQL 服务器,但绝对不是 InProc。

关于 LINQ to Twitter 的文档CodePlex.com 网站和可下载源代码中 LinqToTwitterWebFormsDemo 中的工作演示。

关于c# - 在 asp.net 中代表用户发推文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20227131/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com