2016-04-08 16 views
3

LinqToTwitter documentation'da bir kod örneği ile neredeyse her gönderi okudum. ben. Kaydedilir kullanıcı için böyle bir çağrı yapmak Kimliği veya Kullanıcı ekranismi almak içinC# LinqtoTwitter Bağlam bağlamından ScreenName/UserID alma

var friendList = 
      await 
      (from friend in twitterCtx.Friendship 
      where friend.Type == FriendshipType.FriendIDs && 
        friend.ScreenName == "JoeMayo" 
      select friend) 
      .SingleOrDefaultAsync(); 

istiyorum Ama bulabilirsiniz tüm Ekranismi için kodlanmış dize kim yukarıdaki gibi sorgulardır.

Kendi ScreenName/UserID öğemi twitterCtx öğesinden nasıl alabilirim? İlk yetki zaman

Alkış,

Chris

cevap

3

, IAuthorizer ait ScreenName ve UserID doldurulur:

  var credentials = auth.CredentialStore; 
     string oauthToken = credentials.OAuthToken; 
     string oauthTokenSecret = credentials.OAuthTokenSecret; 
     string screenName = credentials.ScreenName; 
     ulong userID = credentials.UserID; 

tüm 4 kimlik bilgilerini önceden yüklüyorsanız, LINQ Yetkilendirme sürecinden tekrar geçmeyerek zamandan, bant genişliğinden ve kullanıcı rahatsızlığından tasarruf etmek için Twitter'a kısa devreler. Yan etki, ScreenName ve UserID'u almamanızdır, çünkü bunlar bir yetkilendirme ürünüdür. Bu nedenle, birisinin anahtarlarını ilk yetkilendirmeden sonra saklarsanız, bunları sonraki sorgularda tekrar kullanabilirsiniz, daha sonra ScreenName ve UserID'u da o sırada yakalayın.

Elbette ScreenName ve UserID'u elde etmenin başka bir yolu vardır. Böyle bir VerifyCredentials sorgu yapabilirsiniz:

 try 
     { 
      var verifyResponse = 
       await 
        (from acct in twitterCtx.Account 
        where acct.Type == AccountType.VerifyCredentials 
        select acct) 
        .SingleOrDefaultAsync(); 

      if (verifyResponse != null && verifyResponse.User != null) 
      { 
       User user = verifyResponse.User; 

       Console.WriteLine(
        "Credentials are good for {0}.", 
        user.ScreenNameResponse); 
      } 
     } 
     catch (TwitterQueryException tqe) 
     { 
      Console.WriteLine(tqe.Message); 
     } 
ScreenName

ve UserIDAccount varlığa User mülkiyet User varlık olan VerifyCredentials sorgudan döndü. Sırasıyla sırasıyla ScreenNameResponse ve **UserIDResponse** özellikleridir.