我是一個業餘愛好開發人員,我很忙於使用asp.net MVC,並試圖讓基本的Oauth通過Twitter工作。新手需要基本MVC的幫助Oauth Twitter的設置
我所做的只是把一個名爲Twitter的控制器與此代碼: (它來自webforms的一個在線示例,但我稍微修改了它,並將其放入2個操作方法,索引和回調..是正確的方法它?)
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Mvc.Ajax;
using OAuthLibrary;
namespace mvcTwit.Controllers
{
public class TwitterController : Controller
{
private const string AccessUrl = "http://twitter.com/oauth/access_token";
private const string AuthorizeUrl = "http://twitter.com/oauth/authorize?oauth_token={0}";
private const string RequestUrl = "http://twitter.com/oauth/request_token";
//
// GET: /Twitter/
public ActionResult Index()
{
// add these to web.config
var consumerKey = ConfigurationManager.AppSettings["consumerKey"];
var consumerSecret = ConfigurationManager.AppSettings["consumerSecret"];
// look for an access token in the callback
var requestToken = Request.QueryString["oauth_token"];
if (requestToken == null)
{
requestToken = OAuth.GetRequestToken(RequestUrl,
consumerKey,
consumerSecret);
var collection = HttpUtility.ParseQueryString(requestToken);
var authorizeUrl = String.Format(AuthorizeUrl,
collection[0]);
Response.Redirect(authorizeUrl);
}
return View();
}
public ActionResult Callback(string oauth_token)
{
var consumerKey = ConfigurationManager.AppSettings["consumerKey"];
var consumerSecret = ConfigurationManager.AppSettings["consumerSecret"];
//var requestToken = Request.QueryString["oauth_token"];
var requestToken = oauth_token;
// oauth is complete and callback is returning
// the possibly authorized request token
var collection = HttpUtility.ParseQueryString(requestToken);
// obtain access token
var accessToken = OAuth.GetAccessToken(AccessUrl,
consumerKey,
consumerSecret,
collection[0],
collection[1]);
collection = HttpUtility.ParseQueryString(accessToken);
// make a Twitter request with the access token and secret
var url = "http://twitter.com/account/verify_credentials.xml";
var verify = OAuth.GetProtectedResource(url,
"GET",
consumerKey,
consumerSecret,
collection[0],
collection[1]);
ViewData["oauth_token"] = verify;
return View();
}
}
}
當我去mysite.com/Twitter,它的東西,帶我到這裏twitter.com/oauth/authorize?oauth_token=(long字符串)
然後我填寫我的u/n和p/w後,它ta KES我回到我的網站: mysite.com/Twitter/callback?oauth_token=(long字符串)
,但頁面上的錯誤是:
指數超出範圍。必須是非負數且小於集合的大小。參數名稱:索引
我的問題是,回調行爲的簽名是否正確,因爲它期望從twitter返回一個字符串。顯然我需要在我的global.asax文件中添加一個路由。 那條路線會是什麼樣子? ..我已經嘗試了一切,我無法得到它的工作。是我的問題的根源還是我犯了一個編程錯誤..我不是很專業,但只是隨着我的學習。
而且,我在一個網站上測試這個,而不是localhost。
謝謝。
p.s.我已經花了很長時間在這方面,並尋求幫助作爲最後的手段,所以感謝您的好意。
不是你的問題的答案,但你應該看看DotNetOpenAuth,這是一個我更熟悉的庫。它包括使用OAuth和MVC的示例(以及示例特別使用twitter)。鏈接:http://www.dotnetopenauth.net/ –
非常感謝您的回答。我會檢查鏈接,希望它可以幫助我。 :) –