2013-03-20 3 views
0

Я noob в LinQ и имею проблемы с Linq2Twitter и Twitter API в целом.Windows Phone Linq2Twitter - получение имени, имени и имени авторизованного пользователя?

Я не могу понять, как получить имя, идентификатор и имя авторизованного пользователя после успешного авторизации.

Я искал темы обсуждения онлайн и единственный совет, который я получил от Джо, - это использовать асинхронный вызов при запросе результатов. За исключением того, что по какой-то причине у меня нет 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. контактный и таким образом получать доступ токен и секрет в pinAuth.OAuthTwitter:

    pinAuth.CompleteAuthorize(
        this.pin, 
        completeResp => Dispatcher.BeginInvoke(() => 
        { ... 
    
  4. Затем я пытаюсь получить пользователь ... с вызовом асинхронной, как это то, что Джо Майо рекомендуется в других потоках.

    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 почему-то).

Как получить имя, идентификатор и имя авторизованного пользователя?

ответ

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(); 
+0

ответ - это то, что вам нужно. Подробнее о том же вопросе здесь: http://linqtotwitter.codeplex.com/discussions/437277 –