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 に答える