我一直在尋找最新的代表用戶在Webforms中發佈推文的方法。我所遇到的大部分信息都是在2010年左右發佈的,涉及Twitterizer,而Twitterizer不再支持Twitter API。我的問題是,有沒有更新的文檔或例子,關於這個問題的教程?在asp.net代表用戶發送推文
我已經創建了我的應用程序,擁有消費者密鑰和祕密,但我遇到的大部分代碼都是在php中。任何幫助,將不勝感激。
我一直在尋找最新的代表用戶在Webforms中發佈推文的方法。我所遇到的大部分信息都是在2010年左右發佈的,涉及Twitterizer,而Twitterizer不再支持Twitter API。我的問題是,有沒有更新的文檔或例子,關於這個問題的教程?在asp.net代表用戶發送推文
我已經創建了我的應用程序,擁有消費者密鑰和祕密,但我遇到的大部分代碼都是在php中。任何幫助,將不勝感激。
由於您使用的是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工作演示。
說這個功能是要進入一個服務,在那種情況下你將如何處理重定向? –
OAuth本質上是爲Web構建的(允許用戶授權您的應用程序以其名義運行)。所以,其他方案需要不同的方法。在服務(Web或Windows)的情況下,我的用例通常是單用戶。因此,您可以使用SingleUserAuthorizer或ApplicationOnlyAuthorizer,它們都需要所有4個OAuth令牌。重定向只需要在用戶第一次授權您的應用程序時發生。如果您不使用先前的選項,則可以保存令牌並將令牌發送到服務。 –
有沒有任何例子可以聯繫到我呢? –
我已經發布了關於如何驗證和使用他們的API的答案。可能對你有些用處。 http://stackoverflow.com/questions/17067996/authenticate-and-request-a-users-timeline-with-twitter-api-1-1-oauth/17071447#17071447 – hutchonoid
你使用WebForms或MVC?我支持LINQ to Twitter:https://linqtotwitter.codeplex.com/,它允許您使用Twitter提供的任何類型的OAuth。一旦我知道你在使用什麼,我可以用它的工作原理來回答。 –
該網站是用webforms構建的。 –