0

我是 LinQ 的菜鸟,并且在使用 Linq2Twitter 和 Twitter API 时遇到了问题。

我无法理解如何在成功授权后获取授权用户的屏幕名称、id 和名称。

我在网上搜索了讨论线程,从 Joe 那里得到的唯一建议是在查询结果时使用异步调用。除了由于某种原因我没有 MaterializedAsyncCallback 所以我使用 AsyncCallback 代替。

以下是我从授权到尝试获取用户信息的所有步骤:

  1. 使用我的消费者密钥和秘密作为凭据创建 PinAuthorizer

    this.pinAuth = new PinAuthorizer
    {
        Credentials = new InMemoryCredentials
         {
             ConsumerKey = CONSUMER_KEY,
             ConsumerSecret = CONSUMER_SECRET
         },
         UseCompression = true,
         GoToTwitterAuthorization = pageLink =>
         Dispatcher.BeginInvoke(() => {
             WebBrowser.Navigate(new Uri(pageLink + "&force_login=true", UriKind.Absolute));
         })
     };
    
  2. 授权开始

    this.pinAuth.BeginAuthorize(resp => ...
    
  3. 输入 pin,从而在 pinAuth.OAuthTwitter 中获取访问令牌和密码:

    pinAuth.CompleteAuthorize(
        this.pin,
        completeResp => Dispatcher.BeginInvoke(() =>
        { ...
    
  4. 然后,我尝试让用户......使用异步调用,因为这是 Joe Mayo 在其他线程中推荐的。

    ITwitterAuthorizer auth = pinAuth;
    TwitterContext twitterCtx = new TwitterContext(pinAuth);
    (from user in twitterCtx.User
     where user.UserID != "JoeMayo"
     select user).AsyncCallback(asyncResponse => {
         var response = asyncResponse.ToList();
         User acc = response.FirstOrDefault();
     // Anything in this block is pointless
     // as I never get into this async callback block.
     // But this is where I expect to get the user's info
     // (screen name, name, id, etc.)
    });
    

我从来没有得到异步响应。MaterializedAsyncCallback (由于某种原因我也没有)。

如何获取授权用户的屏幕名称、id 和名称?

4

1 回答 1

2

您实际上根本没有触发查询!

(from user in twitterCtx.User
 where user.UserID != "JoeMayo"
 select user).AsyncCallback(users => {
    // result is in users variable
    var user = users.SingleOrDefault();
    if(user != null)
    {
        // use user here.
    }
}).SingleOrDefault();
于 2013-03-20T05:29:29.360 回答