不知有人知道測井在使用Twitter(的OAuth)用於.NET驗證用戶
工作示例我目前使用這一個http://www.voiceoftech.com/swhitley/?p=681
但它僅適用如果我設置回調網址爲「oob」,如果我設置一個真正的回調網址,我會得到「401未授權」。
謝謝!
不知有人知道測井在使用Twitter(的OAuth)用於.NET驗證用戶
工作示例我目前使用這一個http://www.voiceoftech.com/swhitley/?p=681
但它僅適用如果我設置回調網址爲「oob」,如果我設置一個真正的回調網址,我會得到「401未授權」。
謝謝!
已經解決了我的問題與http://www.voiceoftech.com/swhitley/?p=681
我救了我的應用程序爲「瀏覽器」,但因爲我不是一個especifying回調URL,它被改造爲「客戶端」的應用程序上節省。
「DotNetOpenAuth」對你很有幫助。 http://www.dotnetopenauth.net/
我已經開發了一個用於OAuth的C#庫,它非常易於使用,並且可以使用並運行。該項目是一個開源項目,我已經包含了演示程序,對 1.谷歌 2. Twitter的 3.雅虎 4. Vimeo的
當然,任何其他的OAuth提供者將做的一樣好作品。你可以找到我寫這一個OAuth經理的文章和圖書館在這裏
,因爲現有的選擇是太複雜了。
OAuth with Verification in .NET
類側重於OAuth的,並且與Twitter的具體工作。這不是一個爲Twitter的Web API的整個表面提供大量方法的類。它只是OAuth。如果你想在Twitter上更新狀態,這個類沒有暴露「UpdateStatus」方法。我認爲應用程序設計師構建他們想發送的HTTP消息是一件簡單的事情。換句話說,HTTP消息是的API。但是OAuth的東西可能會變得有點複雜,所以值得一個API,這就是OAuth類。
這裏的示例代碼請求 「請求令牌」:
var oauth = new OAuth.Manager();
oauth["consumer_key"] = MY_APP_SPECIFIC_CONSUMER_KEY;
oauth["consumer_secret"] = MY_APP_SPECIFIC_CONSUMER_SECRET;
oauth.AcquireRequestToken(SERVICE_SPECIFIC_REQUEST_TOKEN_URL, "POST");
THAT'S IT。在Twitter中,用於請求令牌的服務特定URL是「https://api.twitter.com/oauth/request_token」。
一旦獲得請求令牌,就會彈出Web瀏覽器UI,在該UI中用戶將顯式授予對您的應用程序的批准,以訪問Twitter。第一次運行應用程序時,您需要這樣做一次。這樣做是一個嵌入式web瀏覽器控件的代碼如下所示:
var url = SERVICE_SPECIFIC_AUTHORIZE_URL_STUB + oauth["token"];
webBrowser1.Url = new Uri(url);
Twitter的,這個URL爲「https://api.twitter.com/oauth/authorize?oauth_token=」與附加的的oauth_token。
通過一些HTML屏幕抓取,從Web瀏覽器UI抓住引腳。然後,請一個 「訪問令牌」:
oauth.AcquireAccessToken(URL_ACCESS_TOKEN,
"POST",
pin);
對於Twitter的,該URL是 「https://api.twitter.com/oauth/access_token」。
您不需要明確處理訪問令牌; OAuthManager類將它維持在狀態。但是,如果您想將它們寫入永久存儲器,則可以在oauth["token"]
和oauth["token_secret"]
中獲得令牌和密碼。爲了使與該訪問令牌的請求,生成AuthZ的標題是這樣的:
var authzHeader = oauth.GenerateAuthzHeader(url, "POST");
...其中url
是資源的端點。要在Twitter上更新用戶的狀態,它將是「http://api.twitter.com/1/statuses/update.xml?status=Hello」。
然後將生成的字符串設置到名爲授權的HTTP標頭中,並將HTTP請求發送到該URL。
在接下來的運行中,當你已經擁有的訪問令牌和祕密,你可以實例化這樣的OAuth.Manager:
var oauth = new OAuth.Manager();
oauth["consumer_key"] = MY_APP_SPECIFIC_CONSUMER_KEY;
oauth["consumer_secret"] = MY_APP_SPECIFIC_CONSUMER_SECRET;
oauth["token"] = your_stored_access_token;
oauth["token_secret"] = your_stored_access_secret;
然後就產生了AuthZ的頭,使您的要求,如上所述。
下載DLL
查看Documentation
我遲到了談話,但我已經創建了別人誰是有這個相同的任務的視頻教程。就像你一樣,我有很多的樂趣想弄清楚401錯誤。
視頻:http://www.youtube.com/watch?v=TGEA1sgMMqU
教程:http://www.markhagan.me/Samples/Grant-Access-And-Tweet-As-Twitter-User-ASPNet
代碼(如果你不想離開這個頁面):
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Twitterizer;
namespace PostFansTwitter
{
public partial class twconnect : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
var oauth_consumer_key = "gjxG99ZA5jmJoB3FeXWJZA";
var oauth_consumer_secret = "rsAAtEhVRrXUTNcwEecXqPyDHaOR4KjOuMkpb8g";
if (Request["oauth_token"] == null)
{
OAuthTokenResponse reqToken = OAuthUtility.GetRequestToken(
oauth_consumer_key,
oauth_consumer_secret,
Request.Url.AbsoluteUri);
Response.Redirect(string.Format("http://twitter.com/oauth/authorize?oauth_token={0}",
reqToken.Token));
}
else
{
string requestToken = Request["oauth_token"].ToString();
string pin = Request["oauth_verifier"].ToString();
var tokens = OAuthUtility.GetAccessToken(
oauth_consumer_key,
oauth_consumer_secret,
requestToken,
pin);
OAuthTokens accesstoken = new OAuthTokens()
{
AccessToken = tokens.Token,
AccessTokenSecret = tokens.TokenSecret,
ConsumerKey = oauth_consumer_key,
ConsumerSecret = oauth_consumer_secret
};
TwitterResponse<TwitterStatus> response = TwitterStatus.Update(
accesstoken,
"Testing!! It works (hopefully).");
if (response.Result == RequestResult.Success)
{
Response.Write("we did it!");
}
else
{
Response.Write("it's all bad.");
}
}
}
}
}
感謝您的回答,任何工作示例如何使用Twitter進行身份驗證? – StackOverflower 2011-01-27 17:10:09
試試這個http://nerddinner.codeplex.com/ – Bonshington 2011-01-27 17:41:25