在网站中集成Twitter

时间:2010-06-30 15:55:32

标签: c# twitter oauth

我正在尝试建立一个连接Twitter帐户的网站,以便我可以在我的网站上显示推文。当您通过OAuth身份验证进行连接时,我可以让应用程序工作,并询问我是否要允许该应用程序。

我想做的是,因为它是我自己的Twitter帐户,我希望能够每次登录而无需这样做。我希望网站发送我的凭据,以便用户只看到该页面,并可以查看推文。这可能吗?

3 个答案:

答案 0 :(得分:1)

如果您的帐户未受到保护,您可以使用公共时间表,如:

http://twitter.com/statuses/user_timeline/mytwittername.json?callback=twitterCallback2&count=4

这将为您提供最后4条推文,还有其他方法可以在不进行身份验证的情况下检索您的推文

答案 1 :(得分:1)

我已经弄明白了。我创建了一个继承IConsumerTokenManager接口的新类。然后,我需要更改的唯一属性是ConsumerKeyConsumerSecretGetTokenSecret(如下所示)。

#region Namespaces
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using DotNetOpenAuth.OAuth.ChannelElements;
using DotNetOpenAuth.OAuth.Messages; 
#endregion

namespace BingMapTest
{
    public class ConsumerTokenManager : IConsumerTokenManager
    {
        public string ConsumerKey
        {
            get { return "xxxxxxxx"; }
        }

        public string ConsumerSecret
        {
            get { return "xxxxxxxx"; }
        }

        public string GetTokenSecret(string token)
        {
            return "xxxxxxxx";
        }

        public void ExpireRequestTokenAndStoreNewAccessToken(string consumerKey, string requestToken, string accessToken, string accessTokenSecret)
        {
            throw new NotImplementedException();
        }

        public TokenType GetTokenType(string token)
        {
            throw new NotImplementedException();
        }

        public bool IsRequestTokenAuthorized(string requestToken)
        {
            throw new NotImplementedException();
        }

        public void StoreNewRequestToken(UnauthorizedTokenRequest request, ITokenSecretContainingMessage response)
        {
            throw new NotImplementedException();
        }
    }
}

然后,在我的Page_Load方法中,我实例化新的ConsumerTokenManager

protected void Page_Load(object sender, EventArgs e)
        {
            ITwitterAuthorization auth;

            ConsumerTokenManager tokenManager = new ConsumerTokenManager();

            auth = new WebOAuthAuthorization(tokenManager, "accessToken");
            auth.UseCompression = true;

            // For Twitter
            using (var twitterCtx = new TwitterContext(auth, "https://api.twitter.com/1/", "https://search.twitter.com/"))
            {                   
                // Whatever authorization module we selected... sign on now.  
                try
                {
                    auth.SignOn();
                }
                catch (OperationCanceledException)
                {
                    return;
                }
            }
        }

以为我会分享任何其他人都有类似的问题。

答案 2 :(得分:0)

你仍然需要使用oauth。

这个想法是,当您登录时,任何oauth API都会返回一个访问令牌。有时需要定期重新请求访问令牌,但在Twitter的情况下the FAQ states(几乎在底部)它们不会使它们过期。

此访问令牌用于签署所有未来的呼叫 - 例如检索推文等。