.NET - 没有PIN或真正的回调网址更新状态(推文)到Twitter?

时间:2013-03-30 07:27:32

标签: twitter tweetsharp

我正在尝试编写一个可以使用我在Twitter上注册的“应用程序”推文的应用程序。我正在使用TweetSharp,并尝试按如下方式设置我的TwitterService:

public Twitter(string consumerKey, string consumerSecret)
    {
        this.twitterService = new TwitterService(consumerKey, consumerSecret);
        OAuthRequestToken oAuthRequestToken = this.twitterService.GetRequestToken();
        Uri uri = this.twitterService.GetAuthorizationUri(oAuthRequestToken);
        Process.Start(uri.ToString());
        OAuthAccessToken oAuthAccessToken = 
            this.twitterService.GetAccessToken(oAuthRequestToken);
        this.twitterService
            .AuthenticateWith(oAuthAccessToken.Token, oAuthAccessToken.TokenSecret);
    }

它到达OAuthAccessToken行,然后带我到Twitter网站上的授权[我的应用]使用您的帐户?页面。在我指定虚假回调网址之前,它显示了一个页面,其中包含我的用户在点击“授权应用”按钮时应输入的PIN。然后当我添加一个虚假的回调网址时,它会尝试转到该页面,我的代码会因为以下错误而导致smithereens:

  

远程服务器返回错误:(401)未经授权。

我想知道的是:我是否可以以编程方式发送推文而无需输入个人识别码或拥有合法的回拨网址?

1 个答案:

答案 0 :(得分:1)

必须在用户的上下文中发送推文。 (参考:POST statuses/update。)因此,您的应用必须获得用户的授权(OAuth访问令牌)才能发送推文。由于在不使用基于PIN的身份验证或回调URL的情况下无法获取访问令牌,因此我担心您所要求的内容无法完成。

但是,如果您只想避免在每次启动应用时提示用户输入PIN,那么答案很简单:获得有效的访问令牌后,将其保存在某处(例如,保存到文件中)然后在你的应用程序运行时重新加载它。对于我的WinForms应用程序,我使用.NET的内置每用户Settings机制来存储访问令牌和访问令牌秘密。使用数据库或类似的东西可能会更好地使用Web应用程序来持久访问令牌。

注意:如果这样做,您还需要检查存储的访问令牌的有效性,如果授权过程不再有效,请重复授权过程。 Twitter API文档建议使用GET account/verify_credentials方法来实现此目的。