我一直在寻找在Webforms中代表用户发布推文的最新方法。我遇到的大部分信息都发布在2010年左右,涉及Twitter API,Twitter API不再支持Twitterizer。我的问题是,是否有任何更新的文档或示例,有关该主题的教程?
我已经创建了我的应用程序,拥有消费者密钥和秘密,但我遇到的大部分代码都是在php中。任何帮助将不胜感激。
答案 0 :(得分:1)
由于您正在使用WebForms(通过评论中的回复),这里是一个使用LINQ to Twitter代表另一个用户发送推文的示例。其他示例可能会向您展示如何将签名添加到授权标头,但您仍需要管理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将用户重定向回您的页面以收集其他两个令牌,即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以会话状态存储凭据。所以,你想确保你使用状态服务器,SQL服务器,但绝对不是InProc。
CodePlex.com上的LINQ to Twitter站点上有文档,可下载源代码中有LinqToTwitterWebFormsDemo中的工作演示。