1

嗨,我正在从我的 asp.net 网站发送 Twitter 更新。我已经授权了,但是当它发送推文时我被卡住了,这是我背后的代码:

  protected void btnAuth_Click(object sender, EventArgs e)
{
    // add these to web.config or your preferred location
    var consumerKey = ConfigurationManager.AppSettings["consumerKey"];
    var consumerSecret = ConfigurationManager.AppSettings["consumerSecret"];

    //If User is not valid user
    if (Request.QueryString["oauth_token"] == null)
    {
        //Step 1: Get Request Token
        OAuthTokenResponse RequestToken = OAuthUtility.GetRequestToken(consumerKey,consumerSecret);

        //Step 2: Redirect User to Requested Token
        Response.Redirect("http://twitter.com/oauth/authorize?oauth_token="+ RequestToken.Token);
    }
    else
    {
        //For Valid User
        string Oauth_Token = Request.QueryString["oauth_token"].ToString();

        var accessToken = OAuthUtility.GetAccessToken(consumerKey, consumerSecret, Oauth_Token, txtPIN.Text.Trim());

        lblMessage.Text = "<b>Hello "  + accessToken.ScreenName + ", Welcome to my Twitter App<b>";
        lblMessage.Text += "<br/> Token: " + accessToken.Token;
        lblMessage.Text += "<br/> TokenSecret: " + accessToken.TokenSecret;
        lblMessage.Text += "<br/> UserId: " + accessToken.UserId;
        lblMessage.Text += "<br/> VerificationString: " + accessToken.VerificationString;
    } 
}

 protected void  btnTweet_Click(object sender, EventArgs e)
{
    // add these to web.config or your preferred location
    var consumerKey = ConfigurationManager.AppSettings["consumerKey"];
    var consumerSecret = ConfigurationManager.AppSettings["consumerSecret"];

    OAuthTokens accessToken = new OAuthTokens();
    accessToken.AccessToken = "xxxxxxxxxxxxxxxxxxxxxxxxxxxx";
    accessToken.AccessTokenSecret = "xxxxxxxxxxxxxxxxxxxx";
    accessToken.ConsumerKey = consumerKey;
    accessToken.ConsumerSecret = consumerSecret;

    TwitterStatus TweetStatus = new TwitterStatus();
    TweetStatus.Update(accessTokens, txtTweet.Text);                        
}   

我不知道如何获取 AccessToken 和 AccessTokenSecret。任何帮助都会非常感谢。

4

2 回答 2

2

当您调用 OAuthUtility.GetAccessToken 方法时,访问令牌和秘密值将从 Twitter 返回到您的应用程序:

var accessToken = OAuthUtility.GetAccessToken(consumerKey, consumerSecret, Oauth_Token, Request.QueryString["oauth_verifier"]);

一次性授权流程如下: 1) 获取请求令牌 2) 将用户发送到 Twitter 以登录并授予访问权限 3) 在回调 url 处接收用户,从查询字符串中收集 oauth_token 和 oauth_verifier 值 4) 交换访问令牌的请求令牌和验证器

获得访问令牌后,您应该将其存储起来,以便用户无需再次执行该过程(访问令牌不会过期)。

我注意到您正在从用户那里收集一个 PIN 值,但它看起来好像您的应用程序是一个网站。Web 流程(不是基于 pin 的身份验证)将提供更愉快的用户体验。

如果您有更多问题,请将它们发布到 Twitterizer 论坛,http ://forums.twitterizer.net 。

于 2010-07-24T23:40:57.750 回答
0

成功登录后,您只需在 OAuthTokens 中设置所有四个变量(AccessToken 和 AccessTokenSecret 都返回成功的 OAuthUtility.GetAccessToken)

我建议您在经过身份验证后将 AccessToken 和 AccessToken 存储在 Cookie 中。

创建一个静态类,您可以在其中返回所有四个标记并检查是否提供了所有四个值,否则退出。

于 2010-09-17T08:28:33.237 回答