我无法让我的帐户使用linqtotwitter授权自己

时间:2013-03-03 01:28:58

标签: asp.net asp.net-mvc-3 twitter oauth

我知道之前已经多次询问过这个问题,但我已经使用了linqtotwitter文档和示例中的信息以及此处的其他帖子来实现这一目标。我可以让我的新应用程序发送一条推文,但只是让它让我的twitters授权页面,我不得不点击授权按钮继续。

应用程序本身是经过授权的,所以我每次都不需要我的密码,只是使用了它想要许可的应用程序。

我知道这是因为我的代码中没有任何地方存在我的访问令牌或访问令牌秘密。我已经添加了它们,但每次我获得401未授权(无效或过期的令牌)。

我的代码如下,也许您可​​以看到我出错的地方?

    private IOAuthCredentials credentials = new SessionStateCredentials();

    private MvcAuthorizer auth;
    private TwitterContext twitterCtx;

    public ActionResult Index()
    {

        credentials.ConsumerKey = ConfigurationManager.AppSettings["twitterConsumerKey"];
        credentials.ConsumerSecret = ConfigurationManager.AppSettings["twitterConsumerSecret"];
        credentials.AccessToken = "MYaccessTOKENhere"; // Remove this line and line below and all works fine with manual authorisation every time its called //
        credentials.OAuthToken = "MYaccessTOKENsecretHERE";

        auth = new MvcAuthorizer
        {
            Credentials = credentials
        };

        auth.CompleteAuthorization(Request.Url);

        if (!auth.IsAuthorized)
        {
            Uri specialUri = new Uri(Request.Url.ToString());
            return auth.BeginAuthorization(specialUri);
        }

        twitterCtx = new TwitterContext(auth);
        twitterCtx.UpdateStatus("Test Tweet Here"); // This is the line it fails on //

        return View();
    }

1 个答案:

答案 0 :(得分:2)

以下是有助于解决401错误的常见问题解答:http://linqtotwitter.codeplex.com/wikipage?title=LINQ%20to%20Twitter%20FAQ&referringTitle=Documentation

一些可能也有帮助的项目:

  1. 您不能两次发送相同的文本 - 因此要么使用相同的文本删除以前的推文,要么更改文本。我的所有测试都附加DateTime.Now.ToString()以避免此错误。
  2. SessionStateCredentials在SessionState中保存凭据。会话状态的持久模式默认值为InProc,这意味着如果进程回收,则会话变量将为null,这将不可预测地发生。您可能希望确保使用StateServer或SQL Server模式。