0

嗨,我想用 linqToTwitter 发送私人消息,这是我的代码:

 var auth = new MvcAuthorizer
        {
            Credentials = new InMemoryCredentials()
            {
                ConsumerKey  = TwitterClient.ConsumerKey,
                ConsumerSecret = TwitterClient.ConsumerSecret,                    
                OAuthToken = TempData["AccessToken"] as string,
                AccessToken = TempData["TokenSecret"] as string
            }
        };            
        var twitterContext = new TwitterContext(auth);            
        var message = twitterContext.NewDirectMessage(auth.UserId, "Hi ucef, cool to discuss with you" + DateTime.Now);

但是 auth.UserId 为空,你知道吗!!!

4

1 回答 1

0

Authorizer 只会在您完成 OAuth 流程后立即持有用户 ID,用户在该流程中对您的应用进行身份验证。用户对您的应用进行身份验证后,Twitter 会发回 UserID 和 ScreenName。

您正在同时加载所有 4 个凭据,这样可以方便地查询 Twitter,而无需通过 OAuth 过程。但是,由于您没有完成 OAuth 流程,因此无法填充 UserID。

解决此问题的一种方法是在用户第一次进行身份验证后保存 UserID,并从您在后续查询中存储它的位置检索保存的 ID。

另一种解决方法是执行 Account VerifyCredentials 查询。您可以从 Account.User.UserIdentifier 属性中获取 UserID。

于 2012-10-25T03:50:24.987 回答