2013-07-08 3 views
1

Я после статьи в документации LinqToTwitter:LinqToTwitter OAuth Несанкционированное

http://linqtotwitter.codeplex.com/wikipage?title=Implementing%20OAuth%20for%20ASP.NET%20Web%20Forms&referringTitle=Learning%20to%20use%20OAuth

для того, чтобы пользователи могли войти в мой C# веб-приложения с Twitter.

Вот мой код

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) 
    }; 

    if (!Page.IsPostBack) 
    { 
    auth.CompleteAuthorization(Request.Url); 
    } 

    twitterCtx = new TwitterContext(auth); 

} 


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

Однако я получаю HTTP 401 от линии:

auth.BeginAuthorization(Request.Url);  

Вот трассировки стека:

at LinqToTwitter.OAuthTwitter.WebResponseGet(HttpWebRequest webRequest) 
    at LinqToTwitter.OAuthTwitter.WebRequest(HttpMethod method, String url, String authHeader, IDictionary`2 postData) 
    at LinqToTwitter.OAuthTwitter.OAuthWebRequest(HttpMethod method, Request request, IDictionary`2 postData, String callback) 
    at LinqToTwitter.OAuthTwitter.AuthorizationLinkGet(String requestToken, String authorizeUrl, String callback, Boolean forceLogin, AuthAccessType authAccessToken) 
    at LinqToTwitter.WebAuthorizer.BeginAuthorization(Uri callback, Boolean forceLogin) 
    at LinqToTwitter.WebAuthorizer.BeginAuthorization(Uri callback) 
    at TwitterTest.Default.AuthorizeTwitterButton_Click(Object sender, EventArgs e) in c:\Users\agriffiths.SDASOL\Documents\Visual Studio 11\Projects\TwitterTest\TwitterTest\Default.aspx.cs:line 47 
    at System.Web.UI.WebControls.Button.OnClick(EventArgs e) 
    at System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) 
    at System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) 
    at System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) 
    at System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) 
    at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) 

Полномочия имеют как ConsumerKey и ConsumerSecret для моего приложения на Twitter.

Как авторизовать своих пользователей?

ответ

1

Существует много причин, по которым Twitter API возвращает HTTP 401 Unauthorized. Я собрал LINQ to Twitter FAQ, у которого есть пункт по разрешению 401.

На странице LINQ to Twitter Downloads есть проект WebFormsDemos, который вы можете попробовать, и есть демо-версия WebForms с загружаемым исходным кодом.

+0

Спасибо! В конце концов это оказалось комбинацией CallbackURL, которая не была установлена, и возможность разрешить проверку подлинности через приложение. – Liath

+0

Хороший вопрос - я обновил FAQ, чтобы указать, что проблемы могут быть вызваны несколькими проблемами. –

Смежные вопросы