代码之家  ›  专栏  ›  技术社区  ›  Neil Knight

在网站中集成Twitter

  •  3
  • Neil Knight  · 技术社区  · 14 年前

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

    我想做的是,因为它是我自己的twitter账户,我想每次都可以不用这样做就可以登录。我希望网站发送我的凭证,以便用户只看到页面,并可以查看推特。这可能吗?

    3 回复  |  直到 14 年前
        1
  •  1
  •   Redlab    14 年前

    如果您的帐户不受保护,您可以使用公共时间线,如:

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

    这将为您提供最后4条tweets,还有其他方法可以检索您的tweets,而无需验证

        2
  •  1
  •   Neil Knight    14 年前

    我已经弄明白了。我创建了一个继承IConsumTokenManager接口的新类。然后,我唯一需要改变的是 ConsumerKey , ConsumerSecret GetTokenSecret (如下所示)。

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

    然后,回到我的页面加载方法中,我实例化新的 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;
                    }
                }
            }
    

    我想我会分享,以防其他人也有类似的问题。

        3
  •  0
  •   Till    14 年前

    你还必须使用OAuth。

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

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