2016-04-08 59 views
3

我幾乎閱讀了LinqToTwitter中的代碼示例的每篇文章documentation。 我想要得到的用戶名或用戶的屏幕名作出了誰在登錄的用戶像這樣的電話。c#LinqtoTwitter從連接上下文中獲取ScreenName/UserID

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

但所有我能看到的是像上面誰擁有屏幕名的硬編碼的串查詢。

從哪裏可以得到我自己的ScreenName/UserID離開twitterCtx?

乾杯,

克里斯

回答

3

當你第一次授權,該IAuthorizerScreenNameUserID將被填充:

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

如果你預先加載所有4個憑證,LINQ到Twitter短路,通過不再通過授權過程來節省時間,帶寬和用戶煩惱。副作用是你沒有得到ScreenNameUserID,因爲這些是授權的產物。因此,如果您在初始授權後保存了某人的密鑰,那麼您可以在隨後的查詢中再次使用它們,然後在當時抓取ScreenNameUserID

當然,你有另一種方式獲得ScreenNameUserID。你可以做一個VerifyCredentials查詢,例如:

 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); 
     } 

ScreenNameUserID是在Account實體User財產User實體從VerifyCredentials查詢返回。它們分別命名爲ScreenNameResponse**UserIDResponse**性質。